字典的键,按相应的值反向排序,最好可以这样得到
sorted(adict, key=adict.get, reverse=True)
由于您想要键/值对,因此您可以按照所有其他答案的建议处理这些项目,或者(使用漂亮的adict.get
绑定方法而不是 itemgetters 或奇怪的 lambda;-),
[(k, adict[k]) for k in sorted(adict, key=adict.get, reverse=True)]
Edit:就性能而言,无论哪种方式都没有太多内容:
$ python -mtimeit -s'adict=dict((x,x**2) for x in range(-5,6))' '[(k, adict[k]) for k in sorted(adict, key=adict.get, reverse=True)]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict((x,x**2) for x in range(-5,6)); from operator import itemgetter' 'sorted(adict.iteritems(), key=itemgetter(1), reverse=True)'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict((x,x**2) for x in range(-5,6))' 'sorted(adict.iteritems(), key=lambda (k,v): v, reverse=True)'
100000 loops, best of 3: 11.5 usec per loop
So, the .get
基于的解决方案的性能介于两者之间items
基于的——比itemgetter
,比lambda
。在“瓶颈”情况下,这些微秒分数对您至关重要,请务必关注这一点。在正常情况下,此操作只是某个更大任务中的一个步骤,一微秒或多或少无关紧要,重点是简单性get
然而,习语也是一个合理的选择。