【问题标题】:Sorting Dictionaries by Internal State of Value in Python [duplicate]在Python中按内部值状态对字典进行排序[重复]
【发布时间】:2014-05-12 10:44:49
【问题描述】:

我们如何在 python 中使用值的内部状态对字典进行排序?

例如:

myDict = {'a': {'day': [0, 1, 2, 5], 'week': [4, 3, 1, 2, 3]},
          'b': {'day': [0, 6, 2, 5], 'week': [4, 3, 1, 2, 3]}}

我想按日期列表的第二个值对字典键进行排序,以获取它们对应的值字典。

【问题讨论】:

  • 字典无法排序,你想到的输出是什么?
  • ["a", "b"] as (1
  • 所以您只需要按排序顺序排列的键?
  • 是的,但根据其值对象中的日期列表中的值进行排序。
  • 检查了stackoverflow.com/questions/613183/…,但不清楚如何根据更复杂的值对象(如本例中的字典)进行排序。 itemgetter 不适用于 str

标签: python sorting python-2.7 dictionary


【解决方案1】:

你可以这样排序

print sorted(myDict, key=lambda v: myDict[v]['day'][1])
# ['a', 'b']

key 参数接受一个函数,该函数将用于确定在排序期间用于当前项目的值。

sorted 迭代myDict 时,我们得到了每一个密钥。因此,对于每个键,我们选择day 字典中的第二个元素,并将其用作在排序期间表示键的值。

我们所做的是,当排序函数查找 a 的值时,我们返回 1,当它查找 b 时,我们返回 6

【讨论】:

  • 这是我需要的。标记为重复的问题未解决此特定情况。
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2019-01-25
  • 2015-12-26
相关资源
最近更新 更多