在Python中进行此类排序的标准方法是什么?

时间:2011-06-24 07:04:30

标签: python sorting

想象一下,我有一个这种格式的元组列表:

(1, 2, 3)
(1, 0, 2)
(3, 9 , 11)
(0, 2, 8)
(2, 3, 4)
(2, 4, 5)
(2, 7, 8)
....

我如何按元组的第一个元素排序列表,然后按第二个元素排序?我想进入这个清单:

(0, 2, 8)
(1, 0, 2)
(1, 2, 3)
(2, 3, 4)
(2, 4, 5)
(2, 7, 8)
(3, 9 , 11)

我正在考虑对第一个元素进行排序,然后遍历列表,并使用子数组构建哈希。我可能会过于复杂化:),这就是为什么我要求其他方法做这种事。

5 个答案:

答案 0 :(得分:8)

为什么不简单地让python为你排序?

my_list = [
(1, 2, 3),
(1, 0, 2),
(3, 9 , 11),
(0, 2, 8),
(2, 3, 4),
(2, 4, 5),
(2, 7, 8),
]

print sorted(my_list)
>>>[(0, 2, 8), (1, 0, 2), (1, 2, 3), (2, 3, 4), (2, 4, 5), (2, 7, 8), (3, 9, 11)]

答案 1 :(得分:3)

Python自动做正确的事情:

>>> a = [(1, 2, 3), (1, 0, 2), (3, 9, 11), (0, 2, 8), (2, 3, 4), (2, 4, 5), (2, 7, 8)]
>>> a.sort()
>>> a
[(0, 2, 8), (1, 0, 2), (1, 2, 3), (2, 3, 4), (2, 4, 5), (2, 7, 8), (3, 9, 11)]

答案 2 :(得分:1)

元组已按此方式排序。

试试这个:

#!/usr/bin/python2
l = [
  (1, 2, 3),
  (1, 0, 2),
  (3, 9 , 11),
  (0, 2, 8),
  (2, 3, 4),
  (2, 4, 5),
  (2, 7, 8),
]

l.sort()
print l

答案 3 :(得分:0)

如果您不介意通过所有三个元素进行排序,这实际上是微不足道的:

>>> l = [(1, 2, 3), (1, 0, 2), (3, 9, 11), (0, 2, 8), (2, 3, 4), (2, 4, 5), (2, 7, 8)]
>>> l.sort()
>>> l
[(0, 2, 8), (1, 0, 2), (1, 2, 3), (2, 3, 4), (2, 4, 5), (2, 7, 8), (3, 9, 11)]

答案 4 :(得分:0)

>>> x = [
...   (1, 2, 3),
...   (1, 0, 2),
...   (3, 9 , 11),
...   (0, 2, 8),
...   (2, 3, 4),
...   (2, 4, 5),
...   (2, 7, 8),
... ]
>>> x.sort()
>>> x
[(0, 2, 8), (1, 0, 2), (1, 2, 3), (2, 3, 4), (2, 4, 5), (2, 7, 8), (3, 9, 11)]