我的字典如下。有没有办法输出具有5个最高值的字典?
如果存在第5个最高值的关系,我需要包含这些键。
输入字典:
{
"1": 1,
"12": 1,
"13":2,
"3": 5,
"5":8,
"7":3,
"4":8,
"10":7
}
期望的结果:
{
"3": 5,
"5":8,
"7":3,
"4":8,
"10":7
}
答案 0 :(得分:3)
关系会计:
val = sorted(d.values(), reverse=True)[4]
res = {k: v for k, v in d.items() if v >= val}
print(res)
{'3': 5, '5': 8, '7': 3, '4': 8, '10': 7}
<强>解释强>
sorted
reverse=True
计算第5个最高值。请记住索引从0
开始,因此索引为[4]
。<强>优化强>
@Chris_Rands指出,更有效的方法是使用heapq
计算第5个最高值:
import heapq
val = heapq.nlargest(5, d.values())[-1]
res = {k: v for k, v in d.items() if v >= val}
答案 1 :(得分:1)
from collections import Counter
dict(Counter(your_dict).most_common(5))
输出:
{'10': 7, '3': 5, '4': 8, '5': 8, '7': 3}