这是我的字典:
d = {'a': 100, 'b': 200, 'c': 300, 'd': 350}
我可以找到具有最大值的前 2 个键并将它们放入列表中:
sorted(d, key=d.get, reverse=True)[:2]
但是我应该怎么做才能将前 2 个最大的键和值放在另一个字典而不是列表中?
谢谢。
这是我的字典:
d = {'a': 100, 'b': 200, 'c': 300, 'd': 350}
我可以找到具有最大值的前 2 个键并将它们放入列表中:
sorted(d, key=d.get, reverse=True)[:2]
但是我应该怎么做才能将前 2 个最大的键和值放在另一个字典而不是列表中?
谢谢。
dict.items
根据值排序。dict()
.dict()
给update
要修改的 dict 的方法。演示:
>>> d = {'a': 100, 'b': 200, 'c': 300, 'd': 350}
>>> dic = {}
>>> dic.update(dict(sorted(d.items(), key=lambda x:x[1], reverse=True)[:2]))
>>> dic
{'c': 300, 'd': 350}
使用operator.itemgetter
:
from operator import itemgetter
dic = {}
dic.update(dict(sorted(d.items(), key=itemgetter(1), reverse=True)[:2]))
如果字典很大,那么heapq.nlargest
将比sorted
:
>>> import heapq
>>> dic = {}
>>> dic.update({k:d[k] for k in heapq.nlargest(2, d, key=d.get)})
>>> dic
{'c': 300, 'd': 350}
dict(sorted(d.items(), key=lambda x:x[1], reverse=True)[:2])
更新一些东西:
感谢您的支持。
我看到没有人回答这个问题,所以我决定回答它,但是当我提交答案时,它已经排在第 3 位了。
我很高兴看到最早的答案中出现了非常有用的形式“lambda x:x[1]”。
我强烈推荐这种形式。简单而强大的描述思想。
我也非常想知道:一个对 lambda 形式投反对票的人——lambda 怎么了?有更好的想法与我们分享吗?