从dict列表中获取唯一值

时间:2012-07-31 13:59:53

标签: python

  

可能重复:
  how to uniqify a list of dict in python

我有一个如下列表

[
{'x':'1','y':'1'},{'x':'2','y':'2'},{'x':'1','y':'1'}
]

我想获得一个如下的新列表(独特元素)

[
{'x':'1','y':'1'},{'x':'2','y':'2'}
]

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

>>> 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'}]
>>> 

答案 1 :(得分:1)

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是不可删除的(不能放入一组),我提供了一种解决方法。首先,将dicts转换为字符串,放在一个集合中(以保留唯一的字符串),然后使用ast.literal_eval转换回dicts。

相关问题