2016-02-26 63 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的引理中检查会员资格,它不会给你任何结果。