字典中的重复项(Python)

1 投票
7 回答
10900 浏览
提问于 2025-04-17 05:23

我需要写一个函数,如果字典里有重复的内容,就返回真(true)。也就是说,只要字典里有任何东西出现超过一次,它就会返回真。

这是我现在的代码,但我离目标还很远,不知道该怎么做。

d = {"a", "b", "c"}

def has_duplicates(d):
    seen = set()
    d={}
    for x in d:
        if x in seen:
            return True
        seen.add(x)
    return False

print has_duplicates(d)

7 个回答

3

在你的代码中,d = {"a", "b", "c"},这里的d是一个集合,而不是字典。

字典的键和集合都不能有重复的元素。如果你想找重复的,可以检查一下这些值组成的集合的大小是否和字典本身的大小一样:

def has_duplicate_values(d):
    return len(set(d.values())) != len(d)
7
def has_duplicates(d):
    return False

字典里永远不会有重复的键。顺便说一下,你的函数其实和这个定义是一样的,所以是对的(只是有点长)。

如果你想找重复的 ,那就是

len(set(d.values())) != len(d)

前提是这些值是可以被哈希的。

7

如果你想在字典中查找重复的值:

def has_duplicates(d):
    return len(d) != len(set(d.values()))

print has_duplicates({'a': 1, 'b': 1, 'c': 2})

输出结果:

True

撰写回答