在两个列表中查找共享项的多次迭代

2024-09-30 16:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两个清单:

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)

这段代码需要很长时间才能完成任务,是否有人可以建议其他方法来完成此任务。谢谢


Tags: of代码inforresultitemlistii
1条回答
网友
1楼 · 发布于 2024-09-30 16:26:20

如果您只想匹配相等引理,则无需拆分单词并检查成员身份,只需在列表中使用==操作即可:

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

否则,通过在list1的引理中拆分引理和成员资格检查,将不会给出任何结果

相关问题 更多 >