我有一个看起来像清单的清单

[[1,'a',2],[1,'b',2],[1,'a',3]]


如果列表列表中的第二个元素相同(例如,它们都是a),我想从列表中删除该项目

我想创建如下所示的输出:

[[1,'a',2],[1,'b',2]]


它在重复项列表中获取第一个。

最佳答案

这是How do you remove duplicates from a list whilst preserving order?的变体。

您可以使用标记集来跟踪已附加的子列表,因为字符串是不可变的,因此在set中可哈希且可存储:

lst = [[1,'a',2],[1,'b',2],[1,'a',3]]

marker_set = set()

result = []

for sublist in lst:
    second_elt = sublist[1]
    if second_elt not in marker_set:
        result.append(sublist)
        marker_set.add(second_elt)

print(result)


印刷品:

[[1, 'a', 2], [1, 'b', 2]]


(使用标记集而不是列表允许平均O(1)查找而不是O(N)

关于python - 如何删除列表中的部分重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52767574/

10-14 17:40
查看更多