我有两个清单
lst1=[['hey','jude' ,'fox'],['how','you','do']]
lst2=[['hey','paul'],['how','do']]
我想将lst1中的每个列表与lst2中的每个列表进行比较。如果他们的常用词大于或等于1.那么我需要将更大的列表附加到新列表中。如果他们有共同的话< 1然后我需要将两个列表附加到同一个新列表中
例如:['hey', 'jude','fox']
与['hey','paul']
进行比较,因为它们有共同的单词hey,它重复一次。我需要将更大的列表['hey', 'jude','fox']
附加到新列表中。
答案 0 :(得分:0)
以下是您的解决方案:
lst1=[['hey','jude' ,'fox'],['how','you','do']]
lst2=[['hey','paul'],['how','do']]
new_list=[]
for item in lst1:
for item_1 in lst2:
if isinstance(item_1,list):
for sub_item in item_1:
if sub_item in item:
if len(sub_item)>=1:
if len(item)>len(item_1):
if item not in new_list:
new_list.append(item)
elif len(item_1)>len(item):
if item_1 not in new_list:
new_list.append(item_1)
if len(sub_item)<2:
if sub_item not in new_list:
new_list.append(sub_item)
new_list.append(item)
print([j for i,j in enumerate(new_list) if j not in new_list[:i]])
P.S:你说这个问题很混乱,你的意思是什么
“大于或等于1的单词。”你的意思是单词的长度还是单词的匹配?我假设了一句话。
测试:
列表:
输出:
[['hey', 'jude', 'fox'], ['how', 'you', 'do']]
当列表1在comman中有少于2个len字母时:
lst1=[['hey','jude' ,'fox'],['how','you','do'],["wow"],["wllla","wlahi","aasma"],["h","i","j"]]
lst2=[['hey','paul'],['how','do'],["wllla"],["h"]]
输出:
[['hey', 'jude', 'fox'], ['how', 'you', 'do'], ['wllla', 'wlahi', 'aasma'], ['h', 'i', 'j'], 'h']
当第二个列表具有两个匹配的最大公共列表单词时:
lst1=[['hey','jude' ,'fox'],['how','you','do'],["wow"],["wllla","wlahi","aasma"],["h","i","j"],["abc","def"]]
lst2=[['hey','paul'],['how','do'],["wllla"],["h"],["abc","def","ghi"]]
输出:
[['hey', 'jude', 'fox'], ['how', 'you', 'do'], ['wllla', 'wlahi', 'aasma'], ['h', 'i', 'j'], 'h', ['abc', 'def', 'ghi']]
如果你想避免嵌套,则将逻辑分解为函数 减少嵌套。