python - 将列表格式化为仅包含“超级字符串”
问题描述
我想格式化列表
['wing', 'westwing', 'little', 'little steve', 'spam']
仅包括
['westwing', 'little steve', 'spam']
'wing'这个词被去掉了,因为它是westwing的一个子串,同样,'little'也因为'little steve'而被去掉了。在我的项目中,超字符串包含更多信息。
具体来说,删除一个词 w 的标准是另一个词 v 包含 w 并且 len(w) < len(v)。
解决方案
此脚本将删除作为列表中其他项目的子字符串的所有最短单词:
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']
推荐阅读
- android - Glide 不兼容 androidx 导入 androidx.annotation
- android - 数据绑定:访问包含布局中的字段 - 布局被转换为视图
- sql-server - sql server 使用命名空间解析 xml
- android - 在 Android 手机上重新启用 WiFi 后,NsdManager 发现、立即丢失并重新发现相同的服务
- json - 通过 django 在引导表(python -> jquery)中加载熊猫数据框
- eclipse - Eclipse 项目在推送到 github 后在文件资源管理器中变得不可见
- c++ - 在任何情况下,switch 语句中的 using 声明是否合法?
- c++ - 如何使用 gcc 5.5 在 gdal 2.4 中启用 c++14
- python - Python:Mysql Escape 函数生成损坏的查询
- couchbase - 窝在沙发上