Skip to main content
 首页 » 编程设计

Python将部分字典复制到新字典中

2025年05月04日24fff_TT

我有一个看起来像这样的 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'}