所以基本上我试图找出一种方法,我可以返回一个完成位置的赛车手名单,而不会返回他们所拥有的价值。以下是我必须使用的信息:
{'Dennis': 90.0, 'Alice': 100.0, 'Bob': 101.4389222493041, 'Eva': 94.18226076274071, 'Clare': 111.52090179040226}
我需要返回以下内容:
['Clare', 'Bob', 'Alice', 'Eva', 'Dennis']
所以基本上它按降序排序。请注意,实际得分并未返回。我知道我需要为字典使用“sorted和lambda函数”,但我无法弄清楚它是如何工作的。
def findresult(randomscore):
finalscore = sorted(randomscore, key=lambda x: x)
return(finalscore)
这就是我觉得目前是正确的,我只是不明白如何配置它来按分数排序,任何帮助?
答案 0 :(得分:1)
您只需要sorted
使用dict.get
作为key
与reverse=True
排序,以便从最高值到最低值进行排序,
d = {'Dennis': 90.0, 'Alice': 100.0, 'Bob': 101.4389222493041, 'Eva': 94.18226076274071, 'Clare': 111.52090179040226}
print(sorted(d,key=d.get,reverse=True))
['Clare', 'Bob', 'Alice', 'Eva', 'Dennis']
答案 1 :(得分:0)
您可以使用orderdirct来订购您的directionayr
d = {'Dennis': 90.0, 'Alice': 100.0, 'Bob': 101.4389222493041, 'Eva': 94.18226076274071, 'Clare': 111.52090179040226}
from collections import OrderedDict
od = OrderedDict(reversed(sorted(d.items(), key=lambda kv: kv[1])))
print(od)
print([k for k in od])
打印:
OrderedDict([('Clare', 111.52090179040226), ('Bob', 101.4389222493041), ('Alice', 100.0), ('Eva', 94.18226076274071), ('Dennis', 90.0)])
['Clare', 'Bob', 'Alice', 'Eva', 'Dennis']