将字典按值排序的方法已经被详细介绍过,可以通过以下方式实现:
d={'d':1,'b':2,'c':2,'a':3}
sorted_res_1= sorted(d.items(), key=lambda x: x[1])
# or
from operator import itemgetter
sorted_res_2 = sorted(d.items(), key=itemgetter(1))
我的问题是,如何以最佳方式实现以下输出:
[('d', 1), ('b', 2), ('c', 2), ('a', 3)] 而不是 [('d', 1), ('c', 2), ('b', 2), ('a', 3)]
这样元组就按值排序,然后按键进行排序,如果值相等。
其次,对于反向排序,是否可能出现以下情况: [('a', 3), ('b', 2), ('c', 2), ('d', 1)] 而不是 [('a', 3), ('c', 2), ('b', 2), ('d', 1)]?
itemgetter
只有在Python >2.5版本中才能使用多个项目。 - Shawn Chinsorted(d.items(),key=lambda x: (-x[1],x[0]))
。 - unutbu