字典中的重复项(Python)
我需要写一个函数,如果字典里有重复的内容,就返回真(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