这是我的字典:
d = {'a': 100, 'b': 200, 'c': 300, 'd': 350}
我可以找到最大值的前2个键并将它们放到列表中:
sorted(d, key=d.get, reverse=True)[:2]
但是我应该怎样做才能将前2个最大的键和值放在另一个词典而不是列表中?
感谢。
答案 0 :(得分:3)
dict.items
进行排序。dict()
。dict()
返回的dict传递给要修改的dict的update
方法。<强>演示:强>
>>> 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}
答案 1 :(得分:1)
dict(sorted(d.items(), key=lambda x:x[1], reverse=True)[:2])
更新内容:
感谢一位赞成票。
我看到没有人回答这个问题所以我决定回答这个问题,但是当我提交答案时,它已经排在第3位。
我很高兴看到非常有用的表格“lambda x:x [1]”出现在最终答案中。
我强烈推荐这种形式。简单而强大的描述理念。
我也非常想知道:那个lambda形式的一个人 - 用lambda做什么?有什么更好的想法与我们分享?