2011-05-16 57 views
0

在代碼我寫我需要交兩名橫列表,如:我如何在兩個水平列表之間交叉一列的範圍?

listA的:

('name1','chr1', 'aatt') 
('name2','chr11', 'aaga') 
('name2','chr11', 'aaaa') 
('name3','chr7', 'gtag') 

數組listB

('chr8', 'tagt') 
('chr1', 'tttt') 
('chr7', 'gtag') 
('chr11','aaaa') 
('chr9', 'atat') 

#This lists are compounded by one str per line, wich it has a "/t" in the middle. 
#Also note that are in different order 

我怎樣才能得到它的的listA的行第2列和第3列與listB相交?

期望的結果:

name2 chr11 aaaa 
name3 chr7 gtag 

該解決方案不僅僅是 「設置(listA的)&集(數組listB)」,因爲名單有不同的列數

感謝您的時間!

回答

3
set_b = set(list_b) 
result = [x for x in list_a if (x[1], x[2]) in set_b] 
+0

然後打印出結果,因爲我想...爲C1,C2,C3的結果是:打印C1,C2,C3 ......是嗎? – Geparada 2011-05-16 19:04:35