我有两个字典的列表,并将其与 deepdiff 进行比较。如何“就地”使用 dict2 的修改值来修改/覆盖 dict1 中的值?
import deepdiff
dict_1 = [{"id": "first", "name": "first"}, {"id": "second", "name": "second"}, {"id": "third", "name": "third"}]
dict_2 = [{"id": "first", "name": "first"}, {"id": "second modified", "name": "second modified"}, {"id": "third", "name": "third"}]
diff = deepdiff.DeepDiff(dict_1, dict_2).get('values_changed',{})
print(diff)
其结果是:
{"root[1]['id']": {'new_value': 'second modified', 'old_value': 'second'}, "root[1]['name']": {'new_value': 'second modified', 'old_value': 'second'}}
我该如何处理Deepdiff的结果?结果应该是:
dict_1 = [{"id": "first", "name": "first"}, {"id": "second modified", "name": "second modified"}, {"id": "third", "name": "third"}]
补充:如果“就地”替换不起作用,那么新创建的 dict_3 也可以。
看来
Delta
fromdeepdiff
做了你想要的事情:您也可以使用它而不
mutate=True
获取新对象:这样,您获得的是相同的
dict_2
。也许您可以将更改为diff
仅保留如果您对values_changed
不感兴趣。*_item_added
diff