例如我有一个字典:
{
"a" : 123,
"b" : {
"a" : 24324,
"c" : 9
},
"c" : {
"a" : 123,
"b" : 64
}
}
从该字典中删除所有 a
字段的最佳方法是什么?我知道,我可以对该字典进行迭代,删除一个在键上迭代的字段,这些键也是字典等等。
但也许有更优雅的方法来做到这一点?
编辑
感谢您的回答!但是当键可以是列表时,例如 "b": [{"a": 1, "c": 2}]
最佳答案
嗯,在内部你必须通过手动迭代或递归来一项一项地处理这些项目。
这是使用递归的尝试:
def remove_keys(d, to_remove):
if not isinstance(d, dict):
return d
return {k: remove_keys(v, to_remove)
for k, v in d.items() if k not in to_remove}
您只需将要处理的字典作为第一个参数传递,并将要删除的键的名称(最好作为集合
)作为第二个参数传递。对于您的情况:
remove_keys(d, {"a"})
无论它是否更优雅,这取决于你的品味,我想说:)。
如果你想真正改变字典:
def remove_keys_m(d, to_remove):
if not isinstance(d, dict):
return d
for k in to_remove:
if k in d:
del d[k]
for k in d:
d[k] = remove_keys(d[k], to_remove)
return d
关于python - 从嵌套字典中删除某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47184175/