我有一本字典,像:
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()
在这里游荡没有成功。
尝试使用链接:top n keys with highest values in dictionary with tuples as keys
作为Python的新手,无法绕过完美的解决方案。
有人能分享一些关于这个的想法吗!!!
输出如下:
{'sachin':{'score':15000,'out':100},'Shewag':{'score':12000,'out':150}}
注:应该是前n名球员,例如我需要前两名,但它可以改变后阶段。
是的,您可以通过
lambda
方法的key
参数轻松地完成此操作。请参阅此link以获得更清晰的信息为了只得到前两个结果,您可以尝试列表切片作为
lst[:2]
,以便在根据分数排序后获得前两个名称。快速回答
分类工作:
分步
您可以对项目进行排序:
这是按名字的字母顺序排序的。
使用由
lambda
定义的key
函数按score
排序:使用
reverse
首先得到最大的:最后,通过切片只取前两个项,并使用
dict
将元组列表转换为字典:因为字典没有顺序,你只知道你有两个得分最高的玩家。不知道谁是第一或第二。如果需要,可以保留元组列表或转换为
OrderedDict
以保持顺序:做得好
为了使其更具可重用性,您可以编写一个函数:
现在您可以将其仅用于数据:
或者设置不同数量的顶级玩家:
或者把它们整理好:
你的链接是对的。你必须修改它以用于你的案例。
方法是:
你可以使用库
heapq
现在您可以创建一个新的
OrderedDict
来存储您的dict
相关问题 更多 >
编程相关推荐