如何按值排序Python字典

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

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

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

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

我发现的所有例子都使用lambda,而且我不是那么坚强。 有没有办法通过这个循环,并按照我的方式对它们进行排序 ? 感谢您的任何建议。

PS:如果可以帮助,我可以创建不同的初始字典。


你可以使用

res = list(sorted(theDict, key=theDict.__getitem__, reverse=True))

(你不需要Python 2.x中的list

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

(拉姆达只是一个匿名函数,例如

>>> g = lambda x: x + 5
>>> g(123)
128

这相当于

>>> def h(x):
...   return x + 5
>>> h(123)
128


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

我一直这样做......使用排序方法有优势吗?

keys = dict.keys()
keys.sort( lambda x,y: cmp(dict[x], dict[y]) )

哎呦没读过关于不使用lambda =(

链接地址: http://www.djcxy.com/p/18119.html

上一篇: How to sort a Python dict by value

下一篇: How to sort dictionaries by keys in Python