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

标签 python dictionary

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

相关文章:

java - 有没有办法更改 Android Google Map API 的 map 数据?

python - 在 Python 中使用空字典创建一个集合返回 False

javascript - 使用 Javascript 对数据库进行用户注册和身份验证

python - scikit-learn GaussianProcessRegressor vs GaussianProcess?为什么 GaussianProcess 在 0.18 版本中被弃用?

c# - 为了通过网络传输数据,序列化是必须的吗?

python - 如何通过唯一键值对有序字典列表中的字典进行寻址?

c# - 使用结构作为字典的键和奇怪的事情正在发生

java - 存储与映射中的键相对应的多个值

python - 使用psycopg2构造无连接的查询

python - 有人可以帮我解释这段将小数转换为二进制的代码吗?