Python:替换嵌套字典中的值

2023-12-07

我想用与以下相同的值替换值(格式为字符串)integers,每当关键是 '当前值'.

d = {'id': '10', 'datastreams': [{'current_value': '5'}, {'current_value': '4'}]}

期望的输出:

d = {'id': '10', 'datastreams': [{'current_value': 5}, {'current_value': 4}]}

以下代码段替换字典中的值(的子字符串)。它适用于嵌套 json 结构并处理 json、列表和字符串类型。如果需要,您可以轻松添加其他类型。

def dict_replace_value(d: dict, old: str, new: str) -> dict:
    x = {}
    for k, v in d.items():
        if isinstance(v, dict):
            v = dict_replace_value(v, old, new)
        elif isinstance(v, list):
            v = list_replace_value(v, old, new)
        elif isinstance(v, str):
            v = v.replace(old, new)
        x[k] = v
    return x


def list_replace_value(l: list, old: str, new: str) -> list:
    x = []
    for e in l:
        if isinstance(e, list):
            e = list_replace_value(e, old, new)
        elif isinstance(e, dict):
            e = dict_replace_value(e, old, new)
        elif isinstance(e, str):
            e = e.replace(old, new)
        x.append(e)
    return x

# See input and output below
output = dict_replace_value(input, 'string', 'something')

Input:

input = {
    'key1': 'a string',
    'key2': 'another string',
    'key3': [
        'a string',
        'another string',
        [1, 2, 3],
        {
            'key1': 'a string',
            'key2': 'another string'
        }
    ],
    'key4': {
        'key1': 'a string',
        'key2': 'another string',
        'key3': [
            'a string',
            'another string',
            500,
            1000
        ]
    },
    'key5': {
        'key1': [
            {
                'key1': 'a string'
            }
        ]
    }
}

Output:

print(output)

{
   "key1":"a something",
   "key2":"another something",
   "key3":[
      "a something",
      "another something",
      [
         1,
         2,
         3
      ],
      {
         "key1":"a something",
         "key2":"another something"
      }
   ],
   "key4":{
      "key1":"a something",
      "key2":"another something",
      "key3":[
         "a something",
         "another something",
         500,
         1000
      ]
   },
   "key5":{
      "key1":[
         {
            "key1":"a something"
         }
      ]
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:替换嵌套字典中的值 的相关文章

随机推荐

  • 是否可以将网页内容读入字符串中,以便我可以解析数据?

    我希望能够让我的 iPhone 将 URL 或者实际上是 url 指向的文件 加载到字符串中 我希望能够执行此操作的原因是这样我就可以解析字符串以查找标签并从中提取一些值 这些文件主要是网页 例如 html 或 asp 等 有人能给我一些提
  • 导出并发布 Typescript 中的所有类型和接口

    我正在尝试发布一个打字稿库 我不清楚如何公开所有类型和接口 这是我的设置 mylib src types mytypes ts index ts package json tsconfig json index ts import MyIn
  • Firefox - 删除未修饰复选框的边框

    我有一个复选框appearance none 这在 Chrome 中有效 但在 Firefox 中它留下了一个我无法删除的插入边框 我努力了border none已经 我这里有一个小提琴 http jsfiddle net jcJJ5 不幸
  • 根据 HTML 文本匹配产品价格

    我正在尝试在字符串上使用简单的正则表达式来获取定价信息 但是我的preg match all根本就是没有找到它应该找到的东西 我正在寻找例如 or 或者有时货币符号可能被编码为 HTML 实体 例如对于英镑 pound or 163 使用有
  • Django:在模型 save() 方法中返回序列化器 ValidationError

    我使用 django rest framework 在 Django 框架内创建 Rest API 并且可以返回任何validationError除了序列化器方法之外 但是 我想知道是否有可能返回错误save Django的方法model被
  • 将函数更改为 PDO

    这是我的api中使用的语句 这是第二个 result下面整个函数中的变量 如何将其更改为使用 PDO result query SELECT p IdPhoto p device token title p IdUser FROM phot
  • 如何在nodejs中向mysql查询回调传递参数

    我试图找出将自定义数据传递到查询调用以在回调中可用的正确方法 我在nodejs 中使用MySQL 库 所有最新版本 我调用了 connection query sql function err result 我找不到一种方法来 1 将自定义
  • 在父元素内将对象序列化为 XML

    我有一个 WPF C 程序 有时我需要将对象序列化为 XML 在其他地方 我一直在使用这个 TextWriter writer new StreamWriter xmlFilePath XmlSerializer xmlSerializer
  • 如何从 C stdio.h getline() 替换/忽略无效的 Unicode/UTF8 字符?

    在Python上 有这个选项errors ignore 为了openPython函数 open filepath txt r encoding UTF 8 errors ignore 这样 读取包含无效 UTF8 字符的文件时 它们将被替换
  • 如何完全删除 Xcode 4

    我想删除所有现有的 SDK 版本以及 Xcode 4 Xcode 4 指南说要这样做 sudo Xcode4 Library uninstall devtools mode all 但我在这个位置没有 Xcode4 我看到它的唯一地方是 D
  • 如何正确重载 ostream 的 << 运算符? [复制]

    这个问题在这里已经有答案了 我正在用 C 编写一个用于矩阵运算的小型矩阵库 然而 我的编译器抱怨了 而以前却没有 这段代码被搁置了六个月 在这期间我将我的计算机从Debian 4 0 蚀刻 至Debian 5 0 莱尼 g Debian 4
  • Flexbox/浮动 - 2 1 2 布局

    我正在尝试使用 Flexbox 或浮动创建 2 1 2 布局 如添加到此问题的图像中所示 有没有什么方法可以仅使用有序的项目列表成功地做到这一点 ul li 1 li li 2 li li 3 li li 4 li li 5 li ul 1
  • 将结构体数组从 C# 传递到 Delphi

    我正在使用罗伯特 吉塞克非托管导出 1 2 6 in VS2010我的目标是传递一个结构数组时间 2019 03 17 标签 c NET 3 5 to 德尔福 D7 我必须承认 我对delphi不太熟悉 我已经读过这个帖子 但建议的答案对我
  • 如何找到 Postgres 中所有表的行数

    我正在寻找一种方法来查找 Postgres 中所有表的行数 我知道我可以一次做一张桌子 SELECT count FROM table name 但我想查看所有表的行数 然后按其排序以了解我的所有表有多大 有三种方法可以得到这种计数 每种方
  • UrlConnection 无内容类型

    我目前正在 Eclipse 上使用 Java 7 Maven Spring MVC 和 Eclipselink JPA 编写一个 Web 服务 以访问连接到内部网络的温度 湿度传感器的值 我使用curl 连接到传感器并检索值没有问题 但是当
  • Express 和 ejs <%= 渲染 JSON

    在我的 index ejs 中 我有以下代码 var current user 在我的节点中我有 app get function req res res locals user req user res render index 但是 在
  • iPhone Retina 模拟器的屏幕分辨率错误

    我正在尝试编写一个通用应用程序 对于不同的屏幕分辨率 显示应该略有不同 但是当我这样编码时 void viewDidLoad SCREEN WIDTH UIScreen mainScreen applicationFrame size wi
  • 如何创建继承自Release的CMake配置类型

    这个答案描述如何从头开始创建自定义配置类型 如何制作与内置完全匹配的配置类型Release 只添加一些标志 我现在正在使用这个 set CMAKE CONFIGURATION TYPES Debug Release ReleaseWithA
  • Greendroid 或 ActionbarSherlock - 设置

    你们知道有关如何在 Windows 上的 Eclipse 中使用上述框架之一的教程吗 我已经下载了它们并按照说明进行操作 但在这两种情况下我仍然遇到错误 挫败感 我刚刚在 ActionBarSherlock 上尝试了这些说明 但我很确定当我
  • Python:替换嵌套字典中的值

    我想用与以下相同的值替换值 格式为字符串 integers 每当关键是 当前值 d id 10 datastreams current value 5 current value 4 期望的输出 d id 10 datastreams cu