Python 一个用于按值然后按键对dict排序的行程序?
假设我有下面的句子Python 一个用于按值然后按键对dict排序的行程序?,python,sorting,dictionary,Python,Sorting,Dictionary,假设我有下面的句子 sample = { 'a' : 100, 'b' : 3, 'e' : 42, 'c' : 250, 'f' : 42, 'd' : 42, } 我想对这个dict进行排序,最高顺序的排序是按值排序,较低顺序的排序是按键排序 结果的键值对是这样的 ( ('b', 3), ('d', 42), ('e', 42), ('f', 42), ('a', 100), ('c', 250) ) 我已经知道如何通过编写几行python代码来实现这一点。然而,
sample = {
'a' : 100,
'b' : 3,
'e' : 42,
'c' : 250,
'f' : 42,
'd' : 42,
}
我想对这个dict进行排序,最高顺序的排序是按值排序,较低顺序的排序是按键排序
结果的键值对是这样的
( ('b', 3), ('d', 42), ('e', 42), ('f', 42), ('a', 100), ('c', 250) )
我已经知道如何通过编写几行python代码来实现这一点。然而,我正在寻找一个能够执行这种排序的pythonner,可能使用一个理解或一个或多个python函数式编程结构
这样的一行程序在python中可能吗 您可以使用操作员模块:
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)))
按_值排序的_:
(('b', 3), ('e', 42), ('d', 42), ('f', 42), ('a', 100), ('c', 250))
按\u键排序的\u:
(('a', 100), ('b', 3), ('c', 250), ('d', 42), ('e', 42), ('f', 42))
您可以使用操作员模块:
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)))
按_值排序的_:
(('b', 3), ('e', 42), ('d', 42), ('f', 42), ('a', 100), ('c', 250))
按\u键排序的\u:
(('a', 100), ('b', 3), ('c', 250), ('d', 42), ('e', 42), ('f', 42))
可以定义同时使用值和键的lambda
sorted(sample.items(), key=lambda x: (x[1], x[0]))
可以定义同时使用值和键的lambda
sorted(sample.items(), key=lambda x: (x[1], x[0]))
答案仅显示按字典键排序。sorted\u by\u value变量按值对字典排序,而sorted\u by\u key变量按键对字典排序。请查看我最近的编辑。是的,但两者都不返回我在原始问题中指定的列表。请查看我最近的编辑。代码现在返回已排序项的元组,而不是列表。答案仅显示按字典键排序。sorted_by_value变量按值对字典排序,而sorted_by_key变量按键对字典排序。请查看我最近的编辑。是的,但两者都不返回我在原始问题中指定的列表。请查看我最近的编辑。代码现在返回排序项的元组,而不是列表。哦,是的,我忘记了
key
参数。哦,是的,我忘记了key
参数。