从字典中获取密钥标签?

2024-03-29 12:57:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的字典,我要每个城市的所有钥匙(例如,肾上腺素或空气等)

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}....}

Tags: nametruecitymoreairresultstotal钥匙
1条回答
网友
1楼 · 发布于 2024-03-29 12:57:29

将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}}

相关问题 更多 >