0

list of dictionariesPythonicな方法で2を減算するにはどうすればよいですか?

最初のlistOfDictでユニークな要素を見つけたいです。

以下の私の例を参照してください。

firstDict = [{'A':1 ,'B':1}, {'A':2 ,'B':2}]
secondDict = [{'A':3 ,'B':3}, {'A':2 ,'B':2}]

magicFunction(A, B)戻るべき

[{'A':1 ,'B':1}

そしてmagicFunction(B, A)戻るべきです

[{'A':3 ,'B':3}
4

1 に答える 1

1

そのためにセットを使用できますが、dict残念ながら をセットに追加することはできません。一連のタプルなどの不変型など、セット処理できるものに辞書を「キャスト」する必要があります。それをインデックスと組み合わせて、参照された を返しますdict

def magicFunction(a, b):
    a = [tuple(sorted(d.items())) for d in a]
    b = [tuple(sorted(d.items())) for d in b]
    return [dict(kvs) for kvs in set(a).difference(b)]

結果:

>>> firstDict = [{'A':1 ,'B':1}, {'A':2 ,'B':2}]
>>> secondDict = [{'A':3 ,'B':3}, {'A':2 ,'B':2}]
>>> magicFunction(firstDict, secondDict)
[{'A': 1, 'B': 1}]
>>> magicFunction(secondDict, firstDict)
[{'A': 3, 'B': 3}]
于 2013-01-28T12:21:24.837 に答える