【发布时间】:2014-05-27 15:08:41
【问题描述】:
我正在尝试获取两个列表,每个列表都是具有相同键的字典列表,并且每个列表的输出版本仅包含共享其中一个键的公共值的字典。例如:
#before:
json1 = [{'id':1, 'name':'john', 'age': 3}, {'id':2, 'name':'jack', 'age':5}]
json2 = [{'id':3, 'name':'john', 'age': 5}, {'id':1, 'name':'jill', 'age':3}]
#Do some operation that merges based on the key 'id'
json1 = [{'id':1, 'name':'john', 'age': 3}]
json2 = [{'id':1, 'name':'jill', 'age':3}]
因此,根据 id 合并字典列表将输出我上面写的内容。基于另一个键(例如“名称”)进行合并只会保留每个列表的第一个字典。
有谁知道这样做的好方法吗?
编辑 抱歉列表名称,我想非常准确,我将它们称为 json1 和 json2
【问题讨论】:
-
为什么你的列表命名为 dict1 和 dict2? =/
-
您要合并的 ID 是什么?就像我看到你有 id = 1 但是如果还有其他匹配的 id 呢?你只想选一个吗?把它当成一套来用?
-
以上示例中没有其他 ID 匹配。只有第一个 json 的第 0 个索引和第二个 json 的第一个索引具有匹配的 ID,因此它们将是唯一保留到每个 json 输出的字典。这就是我想要的。与其说匹配某个 id=1,不如说是在每个 json 中找到匹配的 ID
-
所以你只是想用一套吧?
-
我很确定你不能散列字典,你有什么想法来做一个集合?我想保留每个字典中的所有其他信息(如示例中,我们在整个过程中保留姓名和年龄信息)
标签: python list dictionary