2016-02-26 64 views
0

我有以下兩個列表多個迭代:查找共享項目中兩個列表

list1 = [(('diritti', 'umani'), 'diritto uomo'), (('sgomberi', 'forzati'), 'sgombero forza'), (('x', 'x'), 'x x'), ...] ## list of tuples, each tuple contains term and lemma of term 

list2 = ['diritto uomo', 'sgombero forza'] ### a small list of lemmas of terms 

的任務是從list1的,其引理是存在於list2條款中提取。請注意,在list2一個元素可以有不止一個學期的共享引理list1,所以在list2每一個項目,我需要找到list1其共享項目。我想這樣的代碼:

result = [] 
for item in list2: 
    for x in list1: 
      for i, ii in x: 
        if item.split()[0] in ii or item.split()[1] in ii : 
          result.append(i) 

此代碼需要很長的時間做任務,可以有人提出另一種方式來做到這一點。由於

+1

將期望的輸出是上述的例子什麼? – gtlambert

回答

2

如果你只是想匹配的平等引理你不需要拆你的話,檢查會員您可以在列表解析中只需使用==操作:

>>> [item for item, lemm in list1 for w in list2 if w == lemm] 
[('diritti', 'umani'), ('sgomberi', 'forzati')] 

通過拆分,否則引理並在list1的引理中檢查會員資格,它不會給你任何結果。