擅长:python、mysql、java
<p>我不认为有一种“pythonic”的方法来做你想做的事情,因为嵌套dict有无限多的可能值</p>
<p>这是一个开始的答案,你可以适应你的需要</p>
<pre><code>import copy
def _transform(source_dict: dict, keys_to_keep: list):
dict_copy = copy.deepcopy(source_dict) # no side-effects
for key, value in source_dict.items():
if key not in keys_to_keep:
dict_copy.pop(key)
elif isinstance(value, dict):
dict_copy[key] = _transform(value, keys_to_keep)
elif isinstance(value, list):
dict_copy[key] = [
_transform(el, keys_to_keep) if isinstance(el, dict) else el for el in value
]
return dict_copy
</code></pre>