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

Python中替换嵌套字典结构内所有指定字符串的最优实现方法

最优实现方案:递归遍历通用处理

你可以写一个通用的递归处理函数,自动适配任意嵌套深度的字典、列表结构,后续不管你的数据结构怎么扩展,都不需要修改处理逻辑:

def replace_all_tokens(obj, my_token):
    # 处理字符串类型,直接替换token
    if isinstance(obj, str):
        return obj.replace("<<TOKEN>>", my_token)
    # 处理列表,递归遍历每个元素
    elif isinstance(obj, list):
        return [replace_all_tokens(item, my_token) for item in obj]
    # 处理字典,递归遍历每个值
    elif isinstance(obj, dict):
        return {key: replace_all_tokens(value, my_token) for key, value in obj.items()}
    # 其他类型(数字、布尔值、None等)直接返回原值
    else:
        return obj

使用方式

拿到数据库返回的原始数据后直接调用即可:

# 假设raw_data是你从数据库拿到的原始结构
raw_data = {
  "field":"Somestring/somestring.jpg?<<TOKEN>>",
  "list": [
     {"field": "sometring.html?<<TOKEN>>"},
     {"field2": "otherstring.mp4?<<TOKEN>>"}
   ]
}
my_token = "实际的访问验证token"
processed_data = replace_all_tokens(raw_data, my_token)

方案优势

  • 无需手动遍历每个字段,适配任意层级的嵌套结构,后续结构扩展不需要改代码
  • 自动跳过非字符串类型,不会出现类型报错
  • 性能和手动遍历基本一致,中小数据量下无额外损耗

可选简化方案(有限场景适用)

如果能确定你的数据结构所有内容都是JSON可序列化的(没有datetime、自定义类实例等类型),也可以用JSON序列化+替换的快速写法:

import json
processed_data = json.loads(json.dumps(raw_data).replace("<<TOKEN>>", my_token))

注意:该方案仅适用于纯JSON兼容结构的场景,存在非序列化类型时会报错,优先推荐递归方案。


内容的提问来源于stack exchange,提问作者Markus B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:45:03