2014-02-24 177 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)]