可能重复:
如何在 python 中统一 dict 列表
我有一个清单如下
[
{'x':'1','y':'1'},{'x':'2','y':'2'},{'x':'1','y':'1'}
]
我想得到一个新列表如下(独特的元素)
[
{'x':'1','y':'1'},{'x':'2','y':'2'}
]
最好的方法是什么?
可能重复:
如何在 python 中统一 dict 列表
我有一个清单如下
[
{'x':'1','y':'1'},{'x':'2','y':'2'},{'x':'1','y':'1'}
]
我想得到一个新列表如下(独特的元素)
[
{'x':'1','y':'1'},{'x':'2','y':'2'}
]
最好的方法是什么?
import ast
l = [
{'x':'1','y':'1'},{'x':'2','y':'2'},{'x':'1','y':'1'}
]
[ast.literal_eval(el1) for el1 in set([str(el2) for el2 in l])]
通常,保留独特元素的简单解决方案是将它们添加到集合中。但是,由于 dict 是不可散列的(不能放在集合中),我提供了一个解决方法。首先,将字典转换为字符串,放置在一个集合中(以保留唯一的),然后使用 ast.literal_eval 转换回字典。
>>> lst = [{'x':'1','y':'1'},{'x':'2','y':'2'},{'x':'1','y':'1'}]
>>> map(dict, set(tuple(x.items()) for x in lst))
[{'y': '1', 'x': '1'}, {'y': '2', 'x': '2'}]
>>>