2011-06-24 47 views
5

想象我有一个元组列表格式为:在Python中做这种排序的标准方式是什么?

(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) 

我的想法做一个排序的第一个元素,然后通过名单,并建立与子阵列的哈希值。我可能会把事情复杂化:),这就是为什么我要求其他方法来做这种事情。

回答

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)] 
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)] 
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)] 
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 
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)] 
相关问题