【问题标题】:Sort a list of tuples depending on two elements [duplicate]根据两个元素对元组列表进行排序[重复]
【发布时间】:2012-03-11 16:39:26
【问题描述】:

可能重复:
python: how to sort a complex list on two different keys

我有一个元组列表。我想根据两个元素对它们进行排序。下面是一个例子

unsorted = [('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3), ('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)]
sorted   = [('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3), ('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)]

我知道如何在第二个元素上对它们进行排序:

sorted(unsorted, key = lambda element : element[1])

但是如何用两个键做到这一点?

【问题讨论】:

  • Python 的排序是稳定的,这意味着你实际上可以对它进行两次排序,首先是最不重要的元素,然后是最重要的元素。在某些情况下,这实际上可以更快(但只有几次)。

标签: python sorting python-3.x tuples


【解决方案1】:
sorted(unsorted, key=lambda element: (element[1], element[2]))

我已经假设了示例输出中键的顺序。

【讨论】:

  • 可能是 sorted(unsorted, key=lambda element: (element[1:])) 或者 sorted(unsorted, key=lambda element: (element[1:3])) 更好跨度>
  • @pod2metra 有很多可能性。最好的可能是operator.itemgetter(1,2)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2012-03-13
  • 2017-07-27
  • 1970-01-01
  • 2023-04-05
  • 2017-12-29
  • 1970-01-01
相关资源
最近更新 更多