我有两个复杂的数据结构(即.to和_from),我想用_from的相同实体覆盖_to的实体。 我举了这个例子。
# I am having two data structure _to and _from
# I want to override _to from _from
_to = {'host': 'test',
'domain': [
{
'ssl': 0,
'ssl_key': '',
}
],
'x': {}
}
_from = {'status': 'on',
'domain': [
{
'ssl': 1,
'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
}
]
}
### I want this output
_result = {'host': 'test',
'status': 'on',
'domain': [
{
'ssl': 1,
'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
}
],
'x': {}
}
用例2:
_to = {'host': 'test',
'domain': [
{
'ssl': 0,
'ssl_key': '',
'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq',
"abc": [],
'https': 'no'
}
],
'x': {}
}
_from = {
'domain': [
{
'ssl': 1,
'ssl_key': 'Xpyn4zqJEj61ChxOlz4PehMOuPMaxNnH5WUY',
'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
}
]
}
dict.update(dict2)不会帮助我,因为这会删除_to dict中的额外键。
答案 0 :(得分:7)
这很简单:
_to.update(_from)
答案 1 :(得分:1)
下面有一个陷阱:
_to = {'host': 'test',
'domain': [
{
'ssl': 0,
'ssl_key': '',
}
],
'x': {}
}
_from = {'status': 'on',
'domain': [
{
'ssl': 1,
'ssl_cert': 'nuyickK8uk4VxHissViL3O9dV7uGSLF62z52L4dAm78LeVdq'
}
]
}
_to['domain']['ssl_key']
时忽略 _to.update(_from)
如果您想进行深度更新,请查看Update value of a nested dictionary of varying depth