我有一个看起来像清单的清单
[[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/