Python翻转密钥和值的更好方法



我点击的 api 返回字典列表

sample_dict_list = [{'Hits': 1, 'Name': 'A'}, {'Hits': 2, 'Name': 'B'}, {'Hits': 3, 'Name': 'C'}, {'Hits': 4, 'Name': 'D'}, {'Hits': 5, 'Name': 'E'}, {'Hits': 6, 'Name': 'NONE'}]

我写的函数是这样翻转的:

flip_dict = {}
for i in sample_dict_list:
if i['Name']=='A':
flip_dict['Hits'] == i['Hits']
..
..

结果flip_dict:

{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}

我想知道是否有更好或更有效的方法可以做到这一点? 请注意,我排除了NAME='NONE'

您不是在"翻转"键,而是在合并值

应该只需要字典理解,通过键抓取两个值

result = {x['Name'] : x['Hits'] for x in sample_dict_list if x['Name'] not in {'NONE'}} 

您也可以使用operator.itemgetter

dict(map(itemgetter('Name', 'Hits'), sample_dict_list))

虽然这不会轻易过滤。但是字典理解和dict.values映射到列表很容易。

{name: hits for hits, name in map(dict.values, sample_dict_list) if name != 'NONE'}

最新更新