Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个用于按值然后按键对dict排序的行程序?_Python_Sorting_Dictionary - Fatal编程技术网

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
参数。