Python如何在Dictionary中查找重复值

时间:2014-09-27 23:32:23

标签: python dictionary key duplicates

好的,我想知道如何在字典中找到单个键的重复值。

所以我有

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 1), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)

输出:

defaultdict(<class 'list'>, {'blue': [2, 4], 'yellow': [1, 1], 'red': [1]})

正如你所看到的那样&#34;黄色&#34;有重复的值。

我想知道,找出字典中的键内是否存在重复值的最佳pythonic方法是什么。在找到它们之后,将它们从字典中删除。

1 个答案:

答案 0 :(得分:4)

您可以在追加之前检查:

d = collections.defaultdict(list)
for k, v in s:
    if v not in d[k]: # if value not in list already
        d[k].append(v)

或使用集合来存储值:

d = collections.defaultdict(set)
for k, v in s:
    d[k].add(v) # sets don't have duplicates so we don't need a check here

如果您不希望defaultdict(<class 'list'>输出只使用dict(d)制作普通字典,或使用普通字典使用dict.setdefault

d = {}
for k, v in s:
    d.setdefault(k,set())
    d[k].add(v)