Получить ключевые слова из словаря? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть следующий словарь, я хочу все ключи (т. Е. К какому тегу он относится, например, адреналин или эфир и т. Д.) Для каждого города.

dictionary = {u'adrenaline': {u'estimated_total': 234,
u'more': True,
u'results': [{u'adrenaline_score': 2.11474252688113, u'name': u'Rome'},
             {u'adrenaline_score': 1.94859310493828, u'name': u'Budapest'},
             {u'adrenaline_score': 2.65914794847249, u'name': u'Ubud'},
             {u'adrenaline_score': 1.94859310493828, u'name': u'Calgary'},
             {u'adrenaline_score': 3.0, u'name': u'Canc\xfan'}]},
u'air': {u'estimated_total': 234,
u'more': True,
u'results': [{u'air_score': 1.50402325242855, u'name': u'Paris'},
           {u'air_score': 1.50402325242855, u'name': u'Rome'},
           {u'air_score': 1.50402325242855, u'name': u'New York City'},
           {u'air_score': 1.50402325242855, u'name': u'Abu Dhabi'},
           {u'air_score': 1.50402325242855, u'name': u'Key West'},
           {u'air_score': 1.50402325242855, u'name': u'Salt Lake City'}]}

соответствующие теги (ключи) и баллы по городу.

Выход:

     {'Rome': {'adrenaline': 2.11474252688113, 'air': 1.50402325242855},
      'Budapest': {'adrenaline': 1.94859310493828},
      'Ubud': {'adrenaline': 2.65914794847249},
      'Calgary': {'adrenaline': 1.94859310493828}....}

1 Ответ

0 голосов
/ 14 мая 2018

Переименовывая ваш dict d, чтобы не использовать зарезервированное ключевое слово dict, вы можете сделать что-то вроде этого (адаптировать к желаемому выводу, что неясно):

In [1]:
result = {}
for k, v in d.items():
    for score_row in v['results']:
        city = score_row['name']
        if not city in result.keys():
            result[city] = {}
        result[city][k] = score_row['{}_score'.format(k)]

Out[1]:
{'Rome': {'adrenaline': 2.11474252688113, 'air': 1.50402325242855},
 'Budapest': {'adrenaline': 1.94859310493828},
 'Ubud': {'adrenaline': 2.65914794847249},
 'Calgary': {'adrenaline': 1.94859310493828},
 'Cancún': {'adrenaline': 3.0},
 'Paris': {'air': 1.50402325242855},
 'New York City': {'air': 1.50402325242855},
 'Abu Dhabi': {'air': 1.50402325242855},
 'Key West': {'air': 1.50402325242855},
 'Salt Lake City': {'air': 1.50402325242855}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...