我有一本像这样的字典:
data = {'sachin': {'score': 15000, 'out': 100},
'Dhoni': {'score': 8000, out: 80},
'Shewag': {'score': 12000, 'out': 150}}
我想得到两名得分最高的球员。
所以我试过: key = (key for key,value in dd.items() if value['score'] > 'value').next()
绕到这里没有成功。
尝试使用 link: top n keys with highest values in dictionary with tuples as keys
作为 Python 的新手,无法绕过完美的解决方案。
有人可以分享一些想法吗!!!
输出如:
{'sachin':{'score':15000,'out':100},'Shewag':{'score':12000,'out':150}}
注意:应该是前 n 名玩家,例如我需要前两名,但可以在后期更改。
原文由 Sandy 发布,翻译遵循 CC BY-SA 4.0 许可协议
快速回答
整理作品:
在步骤
您对项目进行排序:
这按名称的字母顺序排序。
使用
key
定义的函数 --- 按score
lambda
排序:使用
reverse
先得到最大的:最后,只取前两个带切片的项,并使用
dict
将元组列表转换为字典:由于字典没有顺序,你只知道你有两个得分最高的玩家。没有谁是第一或第二的概念。如果需要,您可以保留元组列表或转换为
OrderedDict
以保留顺序:正确地做
为了使其更具可重用性,您可以编写一个函数:
现在您可以将它与您的数据一起使用:
或者设置不同数量的顶级玩家:
或按顺序排列它们: