IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-修改多层嵌套的字典的key值. -> 正文阅读

[Python知识库]python-修改多层嵌套的字典的key值.

修改的是字典中的key值.这个只能修改key值.


借鉴代码 点击跳转 借鉴的代码是修改的value


数据源

{
    "code": 200,
    "data": {
        "_id": "fa69c4a650b9454a22ab13c781ede848",
        "org_name": "7",
        "p_id": "a34b95fa8d2b491b1cd91b122ab7a92b",
        "org_id": "ca93ed9207956708a4dad3e8f1ac3b52",
        "create_time": 1649238531,
        "update_time": 1649238531,
        "sons": [
            {
                "_id": "912872c3548a75c505de3dfd60288902",
                "org_name": "7",
                "p_id": "ca93ed9207956708a4dad3e8f1ac3b52",
                "org_id": "ac5b45ffe0a17239809282ef714d77f6",
                "create_time": 1649239187,
                "update_time": 1649239187,
                "sons": [
                ]
            }
        ]
    },
    "msg": "success"
}

代码

def update(key, dict_data, modify):
    # 判断需要修改的key是否在初始字典中,在则修改
    if key in dict_data:
        dict_data[modify] = dict_data.pop(key)
        # 循环字典获取到所有的key值和value值
        for keys, values in dict_data.items():
            # 判断valus值是否为列表或者元祖
            if isinstance(values, (list, tuple)):
                # 循环获取列表中的值
                for i in values:
                    # 判断需要修改的值是否在上一个循环出的结果中,在则修改
                    if key in i and isinstance(i, dict):
                        # 调用自身修改函数,将key的值修改成'张三'
                        update(key, i, modify)
                    else:
                        # 否者则调用获取value函数
                        get_value(i, key, modify)
            elif isinstance(values, dict):
                if key in values:
                    update(key, values, modify)
                else:
                    for keys, values in values.items():
                        if isinstance(values, dict):
                            update(key, values, modify)
    else:
        # 循环获取原始字典的values值
        for keys, values in dict_data.items():
            # 判断values值是否是列表或者元祖
            if isinstance(values, (list, tuple)):
                # 如果是列表或者元祖则循环获取里面的元素值
                for i in values:
                    # 判断需要修改的key是否在元素中
                    if key in i:
                        # 调用修改函数修改key的值
                        update(key, i, modify)
                    else:
                        # 否则调用获取values的值函数
                        get_value(i, key, modify)
            # 判断values值是否为字典
            elif isinstance(values, dict):
                # 判断需要修改的key是否在values中
                if key in values:
                    # 调用修改函数修改key的值
                    update(key, values, modify)
                else:
                    # 获取values值的函数
                    get_value(values, key, modify)
    return dict_data


def get_value(tt, key, modify):
    # 循环获取values的值
    for values in tt.values():
        # 判断循环出的value的值是否为列表或者元祖
        if isinstance(values, (list, tuple)):
            # 如果为列表或者元祖则循环获取列表或者元祖中的值
            for i in values:
                # 判断需要修改的值是否在循环出的值中,且i为字典
                if key in i and isinstance(i, dict):
                    update(key, i, modify)
                else:
                    # 否则调用获取value函数
                    get_value(i, key, modify)
        elif isinstance(values, dict):
            if key in values:
                update(key, values, modify)
            else:
                get_value(values, key, modify)


list_item = [
    {"initial": "_id", "modify": "t_id"},  # initial初始   modify 修改
    {"initial": "p_id", "modify": "pp_id"},
    {"initial": "code", "modify": "status_code"},
]


def get_end_dict(list_x: list):
    for num, value in enumerate(list_x):
        update(key=value['initial'], dict_data=data, modify=value['modify'])
        if num + 1 == len(list_item):
            return update(key=value['initial'], dict_data=data, modify=value['modify'])


print(get_end_dict(list_item))


数据结果

{
    "data": {
        "org_name": "7",
        "org_id": "ca93ed9207956708a4dad3e8f1ac3b52",
        "create_time": 1649238531,
        "update_time": 1649238531,
        "sons": [
            {
                "org_name": "7",
                "org_id": "ac5b45ffe0a17239809282ef714d77f6",
                "create_time": 1649239187,
                "update_time": 1649239187,
                "sons": [],
                "t_id": "912872c3548a75c505de3dfd60288902",
                "pp_id": "ca93ed9207956708a4dad3e8f1ac3b52"
            }
        ],
        "t_id": "fa69c4a650b9454a22ab13c781ede848",
        "pp_id": "a34b95fa8d2b491b1cd91b122ab7a92b"
    },
    "msg": "success",
    "status_code": 200
}
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:19:02  更:2022-04-09 18:19:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:16:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码