试试这个:[dict(t) for t in {tuple(d.items()) for d in l}]策略是将字典列表转换为元组列表,其中元组包含字典的项。由于元组可以被散列,所以可以使用set(使用集合理解在这里,更老的python替代方案应该是set(tuple(d.items()) for d in l)),在此之后,从元组重新创建字典。dict.其中:l是原始列表d是列表中的字典之一。t是从字典中创建的元组之一。编辑:如果您想保留顺序,上面的一行将无法工作,因为set不会那么做的。但是,使用几行代码,您也可以这样做:l = [{'a': 123, 'b': 1234},
{'a': 3222, 'b': 1234},
{'a': 123, 'b': 1234}]seen = set()new_l = []for d in l:
t = tuple(d.items())
if t not in seen:
seen.add(t)
new_l.append(d)print new_l示例输出:[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]注意:可能会出现两个键和值相同的字典,不会产生相同的元组。如果它们经历不同的添加/删除键历史记录,则可能发生这种情况。如果您的问题是这样的,那么考虑排序d.items()正如他所建议的。