Python 如何从单词列表中删除相似的单词?
从上面的列表中你可以看到Das和Hima Das在重复。我只想要Hima Das的全名。与Usha和PT Usha类似 o/p我需要什么Python 如何从单词列表中删除相似的单词?,python,list,duplicates,Python,List,Duplicates,从上面的列表中你可以看到Das和Hima Das在重复。我只想要Hima Das的全名。与Usha和PT Usha类似 o/p我需要什么 list1=['Usha', 'Das', 'Anas', 'Chand', 'Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'the As
list1=['Usha', 'Das', 'Anas', 'Chand', 'Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'the Asian Games', 'Asian Games', 'Olympic Games']
可能是列表理解+
任何
:
['Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'Asian Games', 'Olympic Games']
可能是列表理解+
任何
:
['Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'Asian Games', 'Olympic Games']
从列表中包含多个单词的每个元素中创建一组单独的单词 然后使用列表理解来筛选完全在该集合中的元素 此解决方案是
O(n)
,这是您在效率方面所能做的最好的解决方案(比只检查列表要好,因为它是O(n^2)
)
从列表中包含多个单词的每个元素中创建一组单独的单词 然后使用列表理解来筛选完全在该集合中的元素 此解决方案是
O(n)
,这是您在效率方面所能做的最好的解决方案(比只检查列表要好,因为它是O(n^2)
)
我通过使用图书馆解决了一个类似的问题。它将返回与列表中的其他项目相似的单词,这些单词基于许多因素
all_name=['Usha','Das','Anas','Chand','Tokyo','Milkha Singh','Gurbachan Singh Randhawa','PT Usha','KM Beenamol','Hima Das','under-20','Muhammed Anas','Dutee Chand','the Asian Games','Asian Games','Olympic Olympic']
对于列表1中的名称:
matches=fuzzy.extractBests(名称,列表1)
从这里,您可以在匹配列表中找到最长的匹配项,并将其视为您的“候选”匹配项。e、 g“Das”将在某种程度上匹配“Hima Das”,因此它们将被返回,并根据长度选择“Hima Das”
然后将候选匹配项添加到集合中,以确保它们是唯一的。我使用该库解决了一个类似的问题。它将返回与列表中的其他项目相似的单词,这些单词基于许多因素
all_name=['Usha','Das','Anas','Chand','Tokyo','Milkha Singh','Gurbachan Singh Randhawa','PT Usha','KM Beenamol','Hima Das','under-20','Muhammed Anas','Dutee Chand','the Asian Games','Asian Games','Olympic Olympic']
对于列表1中的名称:
matches=fuzzy.extractBests(名称,列表1)
从这里,您可以在匹配列表中找到最长的匹配项,并将其视为您的“候选”匹配项。e、 g“Das”将在某种程度上匹配“Hima Das”,因此它们将被返回,并根据长度选择“Hima Das”
然后将候选匹配项添加到集合中,以确保它们是唯一的。使用for循环:
parts = {w for e in list1 if ' ' in e for w in e.split()}
out = [e for e in list1 if e not in parts]
使用列表理解:
list1=['Usha', 'Das', 'Anas', 'Chand', 'Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'the Asian Games', 'Asian Games', 'Olympic Games']
uniques = []
for i in list1:
if i not in uniques:
uniques.append(i)
print(uniques)
使用for循环:
parts = {w for e in list1 if ' ' in e for w in e.split()}
out = [e for e in list1 if e not in parts]
使用列表理解:
list1=['Usha', 'Das', 'Anas', 'Chand', 'Tokyo', 'Milkha Singh', 'Gurbachan Singh Randhawa', 'PT Usha', 'KM Beenamol', 'Hima Das', 'under-20', 'Muhammed Anas', 'Dutee Chand', 'the Asian Games', 'Asian Games', 'Olympic Games']
uniques = []
for i in list1:
if i not in uniques:
uniques.append(i)
print(uniques)
请注意,对于大型输入列表,这比使用集合慢得多。请注意,对于大型输入列表,这比使用集合慢得多。