单行按值排序字典然后按键排序?

时间:2017-06-14 16:33:09

标签: python sorting dictionary

假设我有以下词典...

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中甚至可以使用这样的单行程吗?

2 个答案:

答案 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))