在Python中,如何将列表简化为重复项列表?

0 投票
9 回答
1048 浏览
提问于 2025-04-15 11:04

我有一个字符串的列表,这些字符串应该是唯一的。我想快速检查是否有重复的字符串。具体来说,我想从原始列表中生成一个新列表,里面包含所有重复的项。我不在乎这些项重复了多少次,所以如果有两个重复的项,新列表里只需要出现一次就可以了。

可惜的是,我想不出一个简单的方法来做到这一点。有谁能给点建议吗?

补充说明:谢谢大家的回答,我想再澄清一下。我并不是单纯想要一个唯一的列表。我是根据文本文件生成这个列表的,我想知道哪些是重复的,这样我就可以去文本文件里把它们删掉,如果有的话。

9 个回答

4

这段代码会在一行内创建一个列表:

L = [1, 2, 3, 3, 4, 4, 4]
L_dup = set([i for i in L if L.count(i) > 1])
6

这里提到的 groupby 是来自 itertools 的一个功能,可能会对你有帮助:


from itertools import groupby
duplicated=[k for (k,g) in groupby(sorted(l)) if len(list(g)) > 1]

简单来说,你可以用它来找出那些出现超过一次的元素……

注意哦,调用 sorted 是必须的,因为 groupby 只有在输入数据是排好序的情况下才能正常工作。

20

这段代码应该能正常运行:

duplicates = set()
found = set()
for item in source:
    if item in found:
        duplicates.add(item)
    else:
        found.add(item)

撰写回答