查找所有具有重复值的字典键

时间:2018-12-16 08:41:50

标签: python python-3.x dictionary

我有一本字典,其中一些值是重复的。 我想打印每个重复项的键:值。 因此,使用以下字典:

animal = {"cat" : "23", "dog" : "21", "lion" : "23"}

我要打印:

cat: 23
lion: 23

我在下面有此代码,但是仅打印后面的代码:

animal = {"cat" : "23", "dog" : "21", "lion" : "23"}
duplicates = []
unique = []
for x in animal:
    if animal[x] not in unique:
        unique.append(animal[x])
    else:
        duplicates.append(x + animal[x])

print(duplicates)

1 个答案:

答案 0 :(得分:3)

我建议您重新考虑您的解决方案。您可以通过将值映射到键列表来反转字典。

dupe = {}
for k, v in animal.items():
    dupe.setdefault(v, []).append(k)

下一步,过滤字典以仅保留具有多个值的那些键。

dupe = {k : dupe[k] for k in dupe if len(dupe[k]) > 1}
print(dupe)
# {'23': ['cat', 'lion']}

此解决方案将从原始文档中找到所有重复的值及其键。