字典列表:合并、排序和选取前(n)个条目


list_of_dicts = [
{'item1': 100}, 
{'item2': 2405},
{'item3': 884},
....
]

我在做什么:

from collections import ChainMap
import heapq
from operator import itemgetter
merged_map = ChainMap(*list_of_dicts)       
merged_dict = dict(merged_map)
# Pick the 2 entries with largest *value*
heap = heapq.nlargest(2, merged_dict.items(), key=itemgetter(1))
# Convert result list to a dict
....

有没有一种更有效/更优雅的方法来完成上述工作?感谢

据我所知,这与您的heapq-方法一样有效,但代码略少:

from collections import Counter, ChainMap
list_of_dicts = [
{'item1': 100},
{'item2': 2405},
{'item3': 884},
]
counter = Counter(ChainMap(*list_of_dicts))
res = dict(counter.most_common(2))
print(res)  # {'item2': 2405, 'item3': 884}

最新更新