【发布时间】:2018-01-23 18:31:07
【问题描述】:
我想映射两个字典列表之间的差异。
我正在使用 Python 3.5,并且想知道获取集合之间差异的最佳方法。我知道集合操作,但我不确定这是否是在我目前的情况下实现它们的最佳方式。
这是我现在拥有的:
orig = set()
chng = set()
original = [{"name": "Tom Pety", "name_id": 1}, {"name": "Tom Cruz", "name_id": 2}]
changed = [{"name": "Tom Petty"}, {"name": "Tom Cruise"}]
for item in original:
orig.update(item.values())
for item in changed:
chng.update(item.values())
diffs = orig - chng
我当前的输出是{'Tom Pety', 1, 2, 'Tom Cruz'}。
最终,我希望得到一个看起来像这样的结果,以便将更改的值与它们的 id 相关联:
[{"name": "Tom Petty", "name_id": 1}, {"name": "Tom Cruise", "name_id": 2}]
最好的方法是什么?
【问题讨论】:
-
original和changed列表的顺序是否相同? -
我不明白你在做什么。您想要的输出与您的原始输入相同。
-
@DanielRoseman:不,请检查姓名的拼写。
-
我不关注:
name_id字段没有改变,但您在输出中列出了它们。 -
@StefanPochmann - 我不确定
set是否是解决这个问题的最佳方法,或者说我是不是找错了树。
标签: python python-3.x list dictionary nested