我点击的 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'}