好的,我想知道如何在字典中找到单个键的重复值。
所以我有
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方法是什么。在找到它们之后,将它们从字典中删除。
答案 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)