【发布时间】:2019-11-04 18:56:17
【问题描述】:
所以我有以下列表列表,并且我试图通过仅在列表项完全匹配时合并重复项来减小大小。订单很重要(更改项目订单将是一个问题)。它们也不是大小相等的列表。
例子:
List = [["a", "b", "c", "d", "e"], ["a", "b"], ["a", "b", "c", "d", "e", "f"], ["a"], ["a", "b", "c", "d", "e"], ["a", "b"]]
我期待以下输出:
List = [["a", "b", "c", "d", "e"], ["a", "b"], ["a", "b", "c", "d", "e", "f"], ["a"]]
这是代码:
def consolidate(all_list):
a = {}
for v in all_list:
if len(v) > 0:
k = v[0]
if k not in a: a[k] = []
a[k].append(v[1:])
for k in a:
a[k] = consolidate(a[k])
return a
但是,它似乎不起作用。
【问题讨论】:
-
Removing duplicates in lists 的可能重复项 - 尽管避免使用字典或集合的解决方案,因为列表不可散列
-
顶级列表的顺序重要吗?如果是,在 Python >3.7 上,你可以这样做:
list(map(list, dict.fromkeys(map(tuple, data)))),你也可以省略最终映射回列表。 -
@wjandrea 您可以轻松转换为元组
标签: python-3.x list dictionary merge