过滤某个键上具有重复值的词典列表

时间:2016-03-17 17:27:45

标签: python dictionary

我有一本字典如下:

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的方法来做到这一点?

1 个答案:

答案 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