3

重複の可能性:
Pythonでdictのリストを一意化する方法

私は次のようなリストを持っています

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

次のように新しいリストを取得したい(固有の要素)

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

最善の方法は何ですか?

4

2 に答える 2

4
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に戻されます。

于 2012-07-31T14:05:25.317 に答える
3
>>> 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'}]
>>> 
于 2012-07-31T14:08:38.480 に答える