假设我有以下词典...
sample = {
'a' : 100,
'b' : 3,
'e' : 42,
'c' : 250,
'f' : 42,
'd' : 42,
}
我想对这个字典进行排序,其中最高顺序排序是按值,而较低顺序排序是按键。
结果的键值对将是......
( ('b', 3), ('d', 42), ('e', 42), ('f', 42), ('a', 100), ('c', 250) )
我已经知道如何通过编写几行python代码来实现这一点。但是,我正在寻找一种可以执行此类操作的python单行程序,可能使用了解或一个或多个python的函数式编程结构。
在python中甚至可以使用这样的单行程吗?
答案 0 :(得分:4)
您可以定义同时使用值和键的lambda。
sorted(sample.items(), key=lambda x: (x[1], x[0]))
答案 1 :(得分:1)
您可以使用操作员模块:
import operator
sample = {
'a' : 100,
'b' : 3,
'e' : 42,
'c' : 250,
'f' : 42,
'd' : 42,
}
sorted_by_value = tuple(sorted(sample.items(), key=operator.itemgetter(1)))
sorted_by_key = tuple(sorted(sample.items(), key=operator.itemgetter(0)))
sorted_by_value:
(('b', 3), ('e', 42), ('d', 42), ('f', 42), ('a', 100), ('c', 250))
sorted_by_key:
(('a', 100), ('b', 3), ('c', 250), ('d', 42), ('e', 42), ('f', 42))