python-3.x - 删除python列表中的冗余子列表
问题描述
大家好,我有一个列表值列表,例如:
list_of_values=[['A','B'],['A','B','C'],['D','E'],['A','C'],['I','J','K','L','M'],['J','M']]
我想保留在该列表中,只保留我拥有最高值的列表。
例如在sublist1
:['A','B']
A和B也存在于 中sublist2
['A','B','C']
,所以我删除了sublist1
. 对于sublist4
. thesublist6
也被删除,因为J和M存在于更长的 中sublist5
。
最后我应该得到:
list_of_no_redundant_values=[['A','B','C'],['D','E'],['I','J','K','L','M']]
其他例子 =
list_of_values=[['A','B'],['A','B','C'],['B','E'],['A','C'],['I','J','K','L','M'],['J','M']]
预期输出:
[['A','B','C'],['B','E'],['I','J','K','L','M']]
有人有想法吗?
解决方案
mylist=[['A','B'],['A','C'],['A','B','C'],['D','E'],['I','J','K','L','M'],['J','M']]
def remove_subsets(lists):
outlists = lists[:]
for s1 in lists:
for s2 in lists:
if set(s1).issubset(set(s2)) and (s1 is not s2):
outlists.remove(s1)
break
return outlists
print(remove_subsets(mylist))
这应该导致[['A', 'B', 'C'], ['D', 'E'], ['I', 'J', 'K', 'L', 'M']]
推荐阅读
- html - 图像溢出固定高度的 flex 容器
- html - 如何在 flexbox 中向上移动单个元素?
- reactjs - 在 IIS 10 上使用 React.js 运行 .net 核心 Web 应用程序时出错
- react-native - React Native 应用程序的初始屏幕上的排毒挂起
- android - 您如何使用在类的函数中返回的 val?
- php - 用PHP提取txt中的所有行
- excel - 如何在 VBA 代码中关闭 Excel 电子表格?
- php - MYSQL PHP 选择查询的反面
- html - 如何将img的宽度和高度应用于多个div?
- python - 在 python-sell 中运行 python 脚本时出现 Python OpenCv imread 错误