gpt4 book ai didi

python - 是否有内置函数或模块可以从包含重叠单词的列表中选择多个短语,然后仅保留最长的短语?

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:31 25 4
gpt4 key购买 nike

我已经在这里查找了一些论坛,但没有专门解决我的问题的。我有一个 list :

listofwords = ['rick','rick sanchez','morty','morty smith sanchez','morty smith']

我的目标是创建一个新列表,删除较短的重叠单词,如下所示:

newlist = ['rick sanchez', 'morty smith sanchez']

我写的是这样的:

def count_substring(string, sub_string):
count = 0
for pos in range(len(string)):
if string[pos:].startswith(sub_string):
count += 1
return count

listofwords = ['rick','rick sanchez','morty','morty smith sanchez','morty smith']
keeper = []
for i in listofwords:
storage = ''
for j in listofwords[1:]:
if count_substring(j,i) == 1:
if len(j) > len(i):
storage = j
elif len(i) > len(j):
storage = i
else:
pass
keeper.append(storage)

print keeper

输出是:

['rick sanchez', '', 'morty smith', '', 'morty smith sanchez']

这与我的目标非常接近,除了我需要再进行一轮该过程并清理列表。

请帮助我,是否有针对这种列表组织的内置模块?

最佳答案

正如评论所说,这是非常具体的,它可能不是内置的,但这里有一个行可以计算您想要的内容。

[word for word in listofwords if sum([word in a for a in listofwords]) <= 1]

这会返回

['rick sanchez', 'morty smith sanchez']

这是一个快速描述。外循环遍历每个单词并仅根据条件选择它。这里的条件是该单词不属于列表中任何其他单词的一部分。如果该单词是另一个单词的一部分,那么总和将大于 1。因此,我们不选择它。

希望有帮助!如果您有任何疑问,请告诉我。

关于python - 是否有内置函数或模块可以从包含重叠单词的列表中选择多个短语,然后仅保留最长的短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59741931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com