0

list of dictionaries我应该如何以pythonic方式减去两个?

我想在第一个 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遗憾的是不能将 a 添加到集合中。您需要将字典“强制转换”为集合可以处理的内容,例如不可变类型,例如元组序列。将其与索引相结合以返回引用的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 回答