我有一本字典如下:
dic=[{'a':1,'b':2,'c':3},{'a':9,'b':2,'c':2},{'a':5,'b':1,'c':2}]
我想过滤掉某些键的重复值的词典,例如在这种情况下键'b'在列表的第一个和第二个词典中有重复值。我想删除第二个条目
很简单,我希望我的过滤列表看起来如下:
filt_dic=[{'a':1,'b':2,'c':3},{'a':5,'b':1,'c':2}]
有没有pythonic的方法来做到这一点?
答案 0 :(得分:1)
使用另一个词典(或defaultdict
)来跟踪您已经看到的键的值。该词典将为原始词典的每个键保留一个200
(用于快速查找)。
set
之后,dic=[{'a':1,'b':2,'c':3},{'a':9,'b':2,'c':2},{'a':5,'b':1,'c':2}]
filt_dic = []
for d in dic:
if not any(d[k] in seen[k] for k in d):
filt_dic.append(d)
for k in d:
seen[k].add(d[k])
print(filt_dic)
为filt_dic
,[{'a': 1, 'c': 3, 'b': 2}, {'a': 5, 'c': 2, 'b': 1}]
为seen
。