首页 > 解决方案 > 将列表格式化为仅包含“超级字符串”

问题描述

我想格式化列表

['wing', 'westwing', 'little', 'little steve', 'spam']

仅包括

['westwing', 'little steve', 'spam']

'wing'这个词被去掉了,因为它是westwing的一个子串,同样,'little'也因为'little steve'而被去掉了。在我的项目中,超字符串包含更多信息。

具体来说,删除一个词 w 的标准是另一个词 v 包含 w 并且 len(w) < len(v)。

标签: python

解决方案


此脚本将删除作为列表中其他项目的子字符串的所有最短单词:

lst = ['wing', 'westwing', 'little', 'little steve', 'spam']

l, out = sorted(lst, key=len, reverse=True), []
while l:
    item = l.pop()
    if all(not item in i for i in l):
        out.append(item)
print(out)

印刷:

['spam', 'westwing', 'little steve']

推荐阅读