2014-02-24 132 views
0

我有一个以下格式的python嵌套列表。我需要根据第三个条目对列表进行排序。如何排序python列表?

interactions = [[0 for x in xrange(3)] for x in xrange(3) ] 
interactions[0] = 'TP53', 'BRCA2', 0.5 
interactions[1] = 'AGT' , 'PCALM', 0.8 
interactions[2] = 'BRCA1', 'BRCA2',0.2 

我想根据第三个条目对列表进行排序,意味着浮点值。请提出一个有效的方法。

+0

一个建议。像这样'interact = []'创建列表,然后使用'interact.append'将元素添加到列表中。现在,您正在创建一个2D列表并用元组替换所有内部列表。 – thefourtheye

回答

3

list.sortsorted接受可选key功能。键功能的返回值用作比较键。

>>> interactions = [[0 for x in xrange(3)] for x in xrange(3) ] 
>>> interactions[0] = 'TP53', 'BRCA2', 0.5 
>>> interactions[1] = 'AGT' , 'PCALM', 0.8 
>>> interactions[2] = 'BRCA1', 'BRCA2',0.2 
>>> interactions.sort(key=lambda i: i[2]) 
>>> interactions 
[('BRCA1', 'BRCA2', 0.2), ('TP53', 'BRCA2', 0.5), ('AGT', 'PCALM', 0.8)] 

您也可以在位置使用operator.itemgetterlambda

import operator 
interactions.sort(key=operator.itemgetter(2)) 
+0

:)感谢您的建议。有效!!! – nitroman

1

sortkey的说法,在那里你可以在任何函数传递。在这种情况下,作一个简短的内联函数(称为lambda),从你的元组返回第三个元素:

interactions.sort(key=lambda x:x[2]) 
0
>> print sorted(interactions, key=lambda x: x[2]) 
    >> [('BRCA1', 'BRCA2', 0.2), ('TP53', 'BRCA2', 0.5), ('AGT', 'PCALM', 0.8)]