Python中是否有一个函数可以更改键的值而与键的位置无关?例如,data
没有嵌套的map
,而model
有嵌套的。 data['longitude']
的值应放在model['map']['longitude']
中。我不知道该怎么办,有可能吗?
data = {
'record': 'Nicaragua',
'text': 'Hello World!',
'latitude': 10.1,
'longitude': 122.55,
'address': None
}
model = {
"_id": 1535083840,
"record": "Germany",
"text": "<br>",
"map": {
"latitude": 0.0,
"longitude": 0.0
}
}
model.pop("_id") # removing the _id in model
expected_result = {
"record": "Nicaragua",
"text": "Hello World!",
"map": {
"latitude": 10.1,
"longitude": 122.55
}
}
答案 0 :(得分:2)
可以这样做:
data = {
'record': 'Nicaragua',
'text': 'Hello World!',
'latitude': 10.1,
'longitude': 122.55,
'address': None
}
model = {
"record": "Germany",
"text": "<br>",
"map": {
"latitude": 0.0,
"longitude": 0.0
}
}
def r_update(target, key, value):
if key in target:
target[key] = value
else:
for k, v in target.items():
if isinstance(v, dict):
r_update(v, key, value)
def update(source, target):
for key, value in source.items():
r_update(target, key, value)
update(data, model)
print(model)
输出
{'record': 'Nicaragua', 'text': 'Hello World!', 'map': {'longitude': 122.55, 'latitude': 10.1}}