如何按值对Python字典进行排序

Sha*_*tle 21 python sorting dictionary

我有一个看起来像这样的字典

{ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }

我想将其转换为DESC并创建一个仅包含关键字的列表.例如,这将返回

["keyword3" , "keyword1" , "keyword4" , "keyword2"]

我发现的所有例子都使用lambda,我对此并不是很强.有没有办法可以循环使用它,并按我的方式对它们进行排序?谢谢你的任何建议.

PS:如果能有所帮助,我可以用不同的方式创建最初的dict.

ken*_*ytm 43

你可以用

res = list(sorted(theDict, key=theDict.__getitem__, reverse=True))
Run Code Online (Sandbox Code Playgroud)

(你不需要list在Python 2.x中)

theDict.__getitem__实际上相当于lambda x: theDict[x].

(lambda只是一个匿名函数.例如

>>> g = lambda x: x + 5
>>> g(123)
128
Run Code Online (Sandbox Code Playgroud)

这相当于

>>> def h(x):
...   return x + 5
>>> h(123)
128
Run Code Online (Sandbox Code Playgroud)

)


Joh*_*ooy 18

>>> d={ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }
>>> sorted(d, key=d.get, reverse=True)
['keyword3', 'keyword1', 'keyword4', 'keyword2']
Run Code Online (Sandbox Code Playgroud)