重複の可能性:
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はハッシュできない(セットに入れることができない)ため、回避策を提供しました。最初に、dictは文字列に変換され、(一意のものを保持するために)セットに配置されてから、ast.literal_evalを使用してdictに戻されます。
>>> 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'}]
>>>