Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
629 views
in Technique[技术] by (71.8m points)

sorting - How to sort a Python dict's keys 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...