2013-06-01 173 views
2

所以,我需要梳理这种名单与第二嵌套列表第一element它的一些随机数据(与像01, 02, 03元素等):在Python排序列表3

[['00553', ['01', '3.4']], ['00553', ['02', '2.1']], ['00551', ['02', '5.3']], etc] 

这个随机数据稍后会在默认情况下与其他数据一起使用,以便将它们组合在一起并通过键将其打印出来(这些键是诸如00553, 00551之类的数字)。

我试图把它defaultdict之前给它排序,但所有我收到整理出来是嵌套表本身的价值..

任何人可以帮我,我在这是新的。

+0

possibl重复[按第二项(整数值)对元组列表进行排序](http://stackoverflow.com/questions/10695139/sort-a-list-of-tuples-by-2nd-item-integer-value) –

回答

2
lis = [['00553', ['01', '3.4']], ['00553', ['02', '2.1']], 
     ['00551', ['02', '5.3']], ['00551', ['01', '5.3']],['00551', ['04', '5.3']]] 
import operator 
newlist = sorted(lis, key=operator.itemgetter(1)) 

结果

>>> newlist 
[['00553', ['01', '3.4']], ['00551', ['01', '5.3']], 
     ['00553', ['02', '2.1']], ['00551', ['02', '5.3']], ['00551', ['04', '5.3']]] 
+4

Shadowing'sorted'真棒! – kirelagin

+8

不,影子内置插件根本不是很棒;这是一个应该避免的容易出错的做法。 – Adam

6
>>> lis = [['00553', ['01', '3.4']], ['00553', ['02', '2.1']], ['00551', ['02', '5.3']]] 
>>> sorted(lis, key = lambda x: int(x[1][0])) 
[['00553', ['01', '3.4']], ['00553', ['02', '2.1']], ['00551', ['02', '5.3']]] 
+0

为什么爱情比列举更多? :) – iraycd

+0

他们是“靠书”。 :D 谢谢,我现在要管理:) – gyrfalcon

3

如果你不喜欢lambda但有点文档:

L = [['00553', ['01', '3.4']], ['00553', ['02', '2.1']], ['00551', ['02', '5.3']]] 
def by_first_of_second(sub_list): 
    """First element of second entry as sort key. 
     Convert to int to sort by numerical value. 
    """ 
    return int(sub_list[1][0]) 

sorted(L, key=by_first_of_second) 

结果:

[['00553', ['01', '3.4']], ['00553', ['02', '2.1']], ['00551', ['02', '5.3']]]