2014-03-05 37 views
1

我是給定一個主值格式發現在其第一個項目在一個元組匹配

(mainValue, (value, value, value, value)) 

的(這可能會或可能不存在的幾千無序元組列表中的列表的第一項),有一個「不錯」的方式,比遍歷,每一個項目的前瞻性和遞增值,在那裏我可以生產符合這樣的元組的索引列表其他:

index = 0; 
for destEntry in destList: 
if destEntry[0] == sourceMatch: 
    destMatches.append(index) 
index = index + 1 

所以我可以比較相對於另一組的子值,以及重新如有必要,從列表中移出最佳匹配。 這工作正常,但似乎像python會有更好的辦法!

編輯: 按照這個問題,在寫原始問題時,我意識到我可以使用字典而不是第一個值(實際上這個列表在另一個字典中),但是在刪除問題之後,我仍然想知道如何做它的元組。

+2

那麼你真的指tuple?因爲你已經將它顯示爲一個列表 – wnnmaw

+1

當你說「無序」時,你的意思是匹配是具有這4個值的任何元組嗎?那麼''(1,2,3,4)'''與''(4,3,2,1)'''匹配嗎? – wnnmaw

+0

你能提供洞察你的目標嗎?您可能會更好地使用不同的數據結構。 –

回答

2

隨着列表理解你的for循環可以降低到這個表達式:

destMatches = [i for i,destEntry in enumerate(destList) if destEntry[0] == sourceMatch] 

您還可以使用filter() 內置功能來過濾數據:

destMatches = filter(lambda destEntry:destEntry[0] == sourceMatch, destList) 

:在Python 3中filter是一個類,返回filter object

相關問題