python - 使用python删除嵌套字典中的键及其值
问题描述
寻找一个通用的解决方案,我可以从 dict 中删除特定的键及其值。例如,如果dict包含以下嵌套键值对:
data={
"set": {
"type": "object", #<-- should remove this key:value pair
"properties": {
"action": {
"type": "string", #<-- should NOT remove this key:value pair
"description": "My settings"
},
"settings": {
"type": "object", #<-- should remove this key:value pair
"description": "for settings",
"properties": {
"temperature": {
"type": "object", #<-- should remove this key:value pair
"description": "temperature in degree C",
"properties": {
"heater": {
"type": "object", #<-- should remove this key:value pair
"properties": {
"setpoint": {
"type": "number"
},
},
"additionalProperties": false
},
},
"additionalProperties": false
},
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
我想要一个输出字典,而不会"type":"object"
出现这个键:值对。预期的输出应该产生没有"type":"object"
解决方案
您可以编写一个递归函数:
def remove_a_key(d, remove_key):
if isinstance(d, dict):
for key in list(d.keys()):
if key == remove_key:
del d[key]
else:
remove_a_key(d[key], remove_key)
并将其称为:
remove_a_key(data, 'type')
这递归地从每个嵌套字典中删除'type'
键和它的值,无论它有多深。