Python中两个列表的交集避免了冗余匹配
我有两个python列表Python中两个列表的交集避免了冗余匹配,python,python-3.x,list,Python,Python 3.x,List,我有两个python列表match1和match2 match1=[“提交”、“论文”、“错误”、“代码”、“未完成”、“下一步”] match2=['Submit'、'paper'、'error'、'code'、'blocked'、'paper'、'next'] 现在,我使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu common=filter(设置(
match1
和match2
match1
=[“提交”、“论文”、“错误”、“代码”、“未完成”、“下一步”]
match2
=['Submit'、'paper'、'error'、'code'、'blocked'、'paper'、'next']
现在,我使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
common=filter(设置(匹配1)。\uuuuu包含\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
打印(列表(常用))
这给了我以下输出
[“提交”、“论文”、“错误”、“代码”、“论文”、“下一步”]
第二个列表中的单词paper
与第一个列表中的单词paper
再次匹配
有没有办法避免这种情况并获得以下输出
['Submit'、'paper'、'error'、'code'、'next']
编辑:
列表的顺序很重要。这就是为什么我使用包含而不是交叉点
我关心的不是常见单词列表中是否存在重复条目。我试图避免match1
中的同一条目与match2
中的另一条目再次匹配。如果两个列表都有两个'paper'
,我会将其作为单独的条目放在公共列表中。如果您只需使用以下方法删除重复项,会怎么样
print(list(dict.fromkeys(list(common)))
您可以使用列表理解,然后通过set()
您可以将列表转换为set,然后使用set中的交集函数查找常用词
match1 = ['Submit' , 'paper' , 'error' , 'code' , 'notcomplete' , 'next']
match2 = ['Submit' , 'paper' , 'error' , 'code' , 'blocked', 'paper' , 'next']
match1_set = set(match1)
match2_set = set(match2)
print(match1_set.intersection(match2_set))
嗨Krishnadas欢迎来到StackOverflow
可以将列表转换为不允许重复的数据结构集。我看到您已经在match1
上使用了它,但您也可以在match2
上使用它们:
common = filter(set(match1).__contains__,set(match2))
我已经找到了这个问题的答案
match1=['Submit','paper','error','code','notcomplete','next']
match2=['Submit','paper','error','code','blocked','paper','next']
common=list(过滤器(匹配1.\uuuu包含匹配2))
common\u final=[w表示匹配中的w,如果w表示相同]
打印(通用\u最终版)
给予
['Submit'、'paper'、'error'、'code'、'next']
感谢所有提供帮助的人。为两个变量使用一个集合:filter(集合(匹配1)。\uuuuu包含\uuuu,集合(匹配2))
您想在列表中重复项目还是not@programmerpro我想保持列表的顺序,重复并不重要,除非它不是通过匹配一个曾经匹配过的单词。谢谢你的回复。不幸的是,我对保持列表顺序的要求不够具体。我已经添加了一个编辑。谢谢你的回复。我希望保持列表的顺序,这就是我使用“包含”的原因。我已经添加了一个编辑。谢谢你的回复。我希望保持列表的顺序,这就是我使用“包含”的原因。我添加了一个编辑。
common = filter(set(match1).__contains__,set(match2))