【发布时间】:2018-10-06 13:02:27
【问题描述】:
我在 python (d1, d2) 中有 2 个字典,我需要将缺失的“id”项从 d2 传递到 d1,忽略任何其他差异(例如 d1 中的额外“子”)。实际上需要的是结果字典只是添加了“id”项的 d1。我尝试过合并,但由于任何一种方式都会丢失数据,因此它不起作用。
d1 = {
"parent": {
"name": "Axl",
"surname": "Doe",
"children": [
{
"name": "John",
"surname": "Doe"
},
{
"name": "Jane",
"surname": "Doe",
"children": [
{
"name": "Jim",
"surname": "Doe"
},
{
"name": "Kim",
"surname": "Doe"
}
]
}
]
}
}
d2 = {
"parent": {
"id": 1,
"name": "Axl",
"surname": "Doe",
"children": [
{
"id": 2,
"name": "John",
"surname": "Doe"
},
{
"id": 3,
"name": "Jane",
"surname": "Doe",
"children": [
{
"id": 4,
"name": "Jim",
"surname": "Doe"
},
{
"id": 5,
"name": "Kim",
"surname": "Doe"
},
{
"id": 6
"name": "Bill",
"surname": "Doe"
},
]
}
]
}
}
result = {
"parent": {
"id": 1,
"name": "Axl",
"surname": "Doe",
"children": [
{
"id": 2,
"name": "John",
"surname": "Doe"
},
{
"id": 3,
"name": "Jane",
"surname": "Doe",
"children": [
{
"id": 4,
"name": "Jim",
"surname": "Doe"
},
{
"id": 5,
"name": "Kim",
"surname": "Doe"
}
]
}
]
}
}
有什么想法吗?
【问题讨论】:
-
名称是否唯一?
-
其实没有...这是一个示例dict,只是为了展示结构
-
孩子的名字是唯一的吗?即单亲只能有每个
(name, surname)的1个孩子?我只是想看看我们如何在不匹配整个孩子序列并产生O(n^2)成本的情况下解决这个问题。 -
是的,这是正确的。我的意思是不同父母的名字不是唯一的
标签: python dictionary merge compare