返回没有值的比赛位置列表

时间:2014-12-09 23:14:28

标签: python lambda sorted

所以基本上我试图找出一种方法,我可以返回一个完成位置的赛车手名单,而不会返回他们所拥有的价值。以下是我必须使用的信息:

{'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) 

这就是我觉得目前是正确的,我只是不明白如何配置它来按分数排序,任何帮助?

2 个答案:

答案 0 :(得分:1)

您只需要sorted使用dict.get作为keyreverse=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']