You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python字典中的值?批量将place键值设为None

解决方法

你的现有函数仅完成了嵌套字典的遍历逻辑,但没有对目标键place执行赋值操作,因此无法实现将其值设为None的需求。以下是两种可行的实现方式:

递归实现

递归是处理嵌套结构最直观的方式,直接遍历所有层级的字典和列表,遇到place键就将其值设为None:

def set_place_to_none(data):
    if isinstance(data, dict):
        # 处理当前字典中的place键
        if "place" in data:
            data["place"] = None
        # 递归处理字典内的每个值
        for value in data.values():
            set_place_to_none(value)
    elif isinstance(data, list):
        # 递归处理列表内的每个元素
        for item in data:
            set_place_to_none(item)

# 调用函数修改数据
set_place_to_none(datas)

迭代实现(非递归)

如果数据层级极深担心递归栈溢出,可以用迭代方式,借助栈存储待处理对象:

def set_place_to_none_iterative(data):
    stack = [data]
    while stack:
        current = stack.pop()
        if isinstance(current, dict):
            if "place" in current:
                current["place"] = None
            # 将字典的值加入栈,继续处理嵌套结构
            stack.extend(current.values())
        elif isinstance(current, list):
            # 将列表元素加入栈
            stack.extend(current)

# 调用函数修改数据
set_place_to_none_iterative(datas)

验证效果

调用上述任意函数后,打印目标字段即可看到修改结果:

print(datas["invoice_info"]["date"][0]["info"])
# 输出: {'comment': 'test', 'place': None}

内容的提问来源于stack exchange,提问作者marwen aydi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:25:38