我有一个看起来像这样的 python 字典:
old_dict={"payment_amt": "20",
"chk_nr": "321749",
"clm_list": {"dtl": [{"clm_id": "1A2345", "name": "John"},
{"clm_id": "9999", "name": "Jack"}]}}
我需要解析上面的内容并将其存储为:
{"payment_amt": "20",
"clm_list": {"dtl": [{"clm_id": "1A2345"},
{"clm_id": "9999"}]}}
是否有正确的 pythonic 方法来做到这一点?
谢谢
最佳答案
就个人而言,如果输入始终与您列出的完全一样,我会直接复制您想要保留在您发布的示例中的确切键(请参阅 Rob 的回答)。保持简单。
但是,如果您不能依赖输入始终具有完全相同的结构,您仍然可以将其减少为仅包含预期的键,并使用使用字典理解的递归函数。
old_dict = {"payment_amt": "20",
"chk_nr": "321749",
"clm_list": {"dtl": [{"clm_id": "1A2345", "name": "John"},
{"clm_id": "9999", "name": "Jack"}]}}
keep = ["payment_amt", "clm_list", "dtl", "clm_id"]
def recursively_prune_dict_keys(obj, keep):
if isinstance(obj, dict):
return {k: recursively_prune_dict_keys(v, keep) for k, v in obj.items() if k in keep}
elif isinstance(obj, list):
return [recursively_prune_dict_keys(item, keep) for item in obj]
else:
return obj
new_dict = recursively_prune_dict_keys(old_dict, keep)
print new_dict
输出:
{'clm_list': {'dtl': [{'clm_id': '1A2345'}, {'clm_id': '9999'}]}, 'payment_amt': '20'}
关于Python将部分字典复制到新字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376563/