How to sort a Python dict by value

I have a dict that looks like this

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

And I would like to convert it DESC and create a list of just the keywords. Eg, this would return

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

All examples I found use lambda and I'm not very strong with that. Is there a way I could loop through this, and sort them as I go ? Thanks for any suggestions.

PS: I could create the initial dict differently if it would help.


You could use

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

(You don't need the list in Python 2.x)

The theDict.__getitem__ is actually equivalent to lambda x: theDict[x] .

(A lambda is just an anonymous function. For example

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

This is equivalent to

>>> 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']

i always did it this way....are there advantages to using the sorted method?

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

whoops didnt read the part about not using lambda =(

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

上一篇: 建立给定文本中最常用单词的ASCII图表

下一篇: 如何按值排序Python字典