从具有重复键的字符串创建 dict/json Python

2023-12-15

我有一个可以解析为 JSON 或 dict 对象的字符串。我的字符串变量如下所示:

my_string_variable = """{
                        "a":1,
                        "b":{
                             "b1":1,
                             "b2":2
                         },  
                        "b": { 
                            "b1":3, 
                            "b2":2,
                            "b4":8
                         } 
                       }"""

当我做json.loads(my_string_variable),我有一个字典,但只有键的第二个值"b"被保留,这是正常的,因为字典不能包含重复的键。

最好的方式是什么?defaultdict像这样 :

result = {
    "a": 1,
    "b": [{"b1": 1, "b2": 2}, {"b1": 3, "b2": 2, "b4": 8}],
}

我已经寻找过类似的问题,但它们都处理字典或列表作为输入,然后创建defaultdicts 来处理重复的键。

就我而言,我有一个字符串变量,我想知道是否有一种简单的方法可以实现此目的。


可以执行以下操作。

import json

def join_duplicate_keys(ordered_pairs):
    d = {}
    for k, v in ordered_pairs:
        if k in d:
           if type(d[k]) == list:
               d[k].append(v)
           else:
               newlist = []
               newlist.append(d[k])
               newlist.append(v)
               d[k] = newlist
        else:
           d[k] = v
    return d

raw_post_data = '{"a":1, "b":{"b1":1,"b2":2}, "b": { "b1":3, "b2":2,"b4":8} }'
newdict = json.loads(raw_post_data, object_pairs_hook=join_duplicate_keys)
print (newdict)

请注意,上面的代码取决于值类型,if type(d[k]) == list。因此,如果原始字符串本身给出一个列表,那么可能需要一些错误处理来使代码健壮。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从具有重复键的字符串创建 dict/json Python 的相关文章

  • Pandas cut 方法不包括下限

    我正在尝试对包含 0 到 100 范围内的年龄的数据帧列进行分箱 当我尝试使用垃圾箱来包含零年龄时 它不起作用 这是一个使用包含我的数据范围的列表的演示 pd cut pd Series range 101 0 24 49 74 100 范
  • Python中非常大的整数的math.pow是错误的[重复]

    这个问题在这里已经有答案了 我试图通过计算一个整数的非常大的幂来打印一个非常大的数字 尽管我的代码是正确的 但我没有观察到所需的输出 一般来说 Python解释器可以打印系统内存支持的非常大的整数 考虑到这个假设 下面是我正在运行的代码 a
  • 通过 HTML 将复杂变量传递给 javascript 的正确方法

    我试图摆脱使用 PHP 的 htmlentities 但我在这里停止了 但后来我想 我不做替换和检查特殊字符 而是只 JSON 整个对象 这提供了一个非常不受欢迎的结果 其中包含大量双引号 那么我应该怎么做呢 我应该为每个图像分配一个数字唯
  • 如何在Python中重命名virtualenv?

    我拼错了名字virtualenv使用以下方法初始化它 virtualenv vnev 我实际上打算创建一个名为的环境venv 尝试重命名后vnev文件夹到venv 我发现这并没有提供太多帮助 激活环境的名称仍然重命名旧的vnev mv vn
  • Django 单元测试数据库没有被拆除?

    我编写了一些单元测试来测试我的 Django 应用程序 特别是一个测试套件中包含大量代码setUp 功能 所述代码的目的是为数据库创建测试数据 是的 我了解固定装置 并且选择在这种情况下不使用它们 当我运行单元测试套件时 运行的第一个测试通
  • Tensorflow:Cuda 计算能力 3.0。所需的最低 Cuda 能力为 3.5

    我正在从源安装tensorflow 文档 https www tensorflow org versions r0 10 get started os setup html installing from sources Cuda驱动版本
  • 为什么Python 3中实例方法可以作为类方法调用?

    考虑下面的类 class Foo object def bar self print self 在Python 2中 2 7 13 调用bar 作为类方法引发异常 gt gt gt Foo bar hello Traceback most
  • 使用字体模块的 Tkinter 代码无法从命令行运行?

    我有使用 tkinter 的代码 我可以从 IDLE 运行得很好 但会引发异常AttributeError module object has no attribute font 当它从命令行运行时 其他 tkinter 程序工作正常 但任
  • Django - 从时间戳获取不同的日期

    我正在尝试按日期过滤用户 但直到我可以找到数据库中用户的第一个和最后一个日期为止 虽然我可以让我的脚本稍后过滤掉重复项 但我想从一开始就使用 Django 来完成此操作distinct因为它显着减少 我试过 User objects val
  • 从 Cython 代码生成 SIMD 指令

    我需要概述在高性能数字代码中使用 Cython 可以获得的性能 我感兴趣的事情之一是找出优化的 C 编译器是否可以对 Cython 生成的代码进行矢量化 所以我决定写下面的小例子 import numpy as np cimport num
  • 为什么变量不在循环外更新?

    无法弄清楚为什么结果中的第一个键是 abc 而不是我期望的 c 我使用的是Python 3 6 4 数据结构很奇怪 因为我删除了不相关的键和值 f replace ab r data abc 1 def 2 ghi 3 jkf 4 lmn
  • 如何使 cx-oracle 将查询结果绑定到字典而不是元组?

    这是我的代码 我想找到一种方法将查询结果作为字典列表而不是元组列表返回 看起来 cx oracle 通过部分文档讨论 绑定 来支持这一点 虽然我不知道它是如何工作的 def connect dsn cx Oracle makedsn hos
  • 如何在Python中一次比较二维数组的2列与另一个数组的列

    我有两个字符串数组 每个数组有三列 我想比较两个二维数组的前两列 有 3 列和 4000 行 如果它们匹配 那么我需要那些匹配的值 但是我的代码不起作用 这是一个示例 array1 1stcolumn 2ndColumn 3rdColumn
  • 按键合并的两个字典的值的并集

    我有两本词典 d1 a x y b k l d2 a m n c p r 如何合并这两个字典以获得这样的结果 d3 a x y m n b k l c p r 当字典的值是简单类型 如 int 或 str 时 这有效 d3 dict i a
  • 打包布尔数组需要通过 int (numpy 1.8.2)

    我正在寻找更紧凑的方式来存储布尔值 numpy 内部需要 8 位来存储一个布尔值 但是np packbits允许打包 他们 这真是太酷了 问题是要打包在4e6字节数组a32e6字节我们需要首先使用的布尔值数组256e6字节将布尔数组转换为
  • 我可以使用 javascript 生成 JSON 文件吗?

    我想在域 example1 com 上创建一个页面 并获取 解析另一个域 example2 com json json 上的 JSON 文件 可以使用 javascript 生成 json 文件 在 example2 com 上 吗 我认为
  • 在 Swift 中初始化空字典数组

    我正在尝试在 Swift 中初始化空数组 对于字符串数组来说 这非常简单 var myStringArray String myStringArray a myStringArray b gt a b 对于整数 var myIntArray
  • PyQt 和 QSignalMapper/lambdas - 多个信号,单槽

    我在 PyQt 的菜单上有一个操作列表 每个操作对应我想要显示的每个不同的提要 所以我有一个 Y 将活动源设置为 Y Z 将其设置为 Z 等等 对于网络漫画阅读程序 我的菜单上都有 并且觉得自动化方法可能更好 而不是每次都打字 类似于将其添
  • 如何自动加载 Webpack 中给定目录中的所有 JSON 文件? [复制]

    这个问题在这里已经有答案了 编辑 有一个现有的问题 https stackoverflow com questions 29421409 how to load all files in a subdirectories using web
  • 我收到错误:rest_framework.request.WrappedAttributeError:'CSRFCheck'对象没有属性'process_request'

    urls py from django conf urls import url from django contrib import admin from django conf import settings from django c

随机推荐

  • Enterprise Library 6 验证配置文件

    我正在尝试学习 EnterpriseLibraryValidatoin 当我配置 TypeValidation 通过配置文件验证类时 它不会拾取 但是当我添加数据注释时它会正确验证 我不知道我是否遗漏了一些东西 请提供任何帮助 验证配置文件
  • JS:仅过滤非空和字符串值类型的数组

    我正在尝试过滤这样的数组 array filter e gt return e 有了这个我想过滤所有空字符串 包括undefined and null 不幸的是 我的数组有一些不应该存在的数组 因此 我还需要仅检查字符串值并删除所有其他值
  • 通俗地说,Ruby 自我?

    Ruby self 什么时候引用 Object 什么时候 self 引用 Ruby 类 带有示例的解释会很棒 我不明白这个问题 类本身就是对象 假设我有一堂课Person 这实际上是一个实例Class 所以你可以让 self 引用 Arti
  • 在 Javascript 中将数字连接为字符串

    myCoolObject a 0 b 12 c 24 我想串联a b and c使它们看起来像一个唯一的字符串 a b c 或示例中的 0 12 24 a b and c总是代表数字 将它们中的每一个从 int 转换为 string 需要大
  • 未找到整数 parseInt 方法

    我正在尝试在这段代码中测试一个简单的方法 您在其中使用接收参数的方法 正在发生的问题是Integer解析 int 方法 命令提示符给出的错误是 java 24 error cannot find symbol cholo Integer p
  • 清除 QGraphicsScene 中的小部件:崩溃

    我有一个 QGraphicsScene 里面有一个 QPushButton 清除这个场景将使我的应用程序崩溃 有没有正确的方法来使用 QWidget 清除场景 单击按钮时以下代码会崩溃 include
  • python:multiprocessing.Pipe 和重定向标准输出

    我在用multiprocessing包生成第二个进程 我想将 stdout 和 stderr 重定向到第一个进程 我在用multiprocessing Pipe object dup2 output pipe fileno 1 Where
  • VS 2010 Ultimate:将 ProteusDebugEngine 调试器附加到进程失败

    当将 C NET 4 项目加载到我的主机 Win 7 Ultimate 64 位 上的 VS 2010 Ultimate 中时 我收到错误消息 Attaching the ProteusDebugEngine debugger to pro
  • 使用“.gitattributes”文件修复 Git 存储库中的行结尾

    需要修复什么 我有一个包含单个 md文件 其中包含我正在写的一篇文章 我在几台不同的计算机上编辑该文件 其中一台运行 Linux 另一台运行 Windows 看着一个git diff现在在 Windows 中我做了一些更改 我可以看到我的文
  • @RequestMapping 未正确映射

    我正在尝试设置一个控制器 但不幸的是无法查看输出 一切都正确渲染 当我去http localhost 8080 CMT content edit我收到 404 页面 从 Netbeans 运行我的应用程序会转到http localhost
  • 多对多 Ajax 表单(Symfony2 表单)

    我在 mongodb 中玩家和锦标赛之间存在多对多关系 我希望能够一次将许多玩家添加到锦标赛中 如果没有 ajax 这很简单 但我们有一个包含数千名玩家的数据库 因此表单选择变得巨大 我们想为此使用 ajax 是否可以创建一个小部件 带有j
  • 创建安装程序:从注册表项读取安装路径(例如 wix/installshield/nsis)

    我想创建我的程序的安装程序 但由于安装相当复杂 我需要比 installshield 限量版更高级的东西 我必须从当前的安装程序中运行另一个安装程序 用户是否按 取消 或安装该程序并不重要 我只需要运行它即可 我必须在用户计算机上安装一个包
  • XMl 解析中的空指针异常

    我需要解析 Xml 文档并将值存储在文本文件中 当我解析普通数据 如果所有标签都有数据 时 它工作正常 但如果任何标签没有数据 那么它会抛出我需要的 空指针异常 要做的 为了避免空指针异常 请建议我使用示例代码 示例 XML
  • 无法使用 Laravel SMTP 驱动程序将邮件发送到 gmail 帐户并且没有收到错误

    我正在 Localhost 中构建 Laravel 5 8 应用程序 我这样配置我的 env 文件 MAIL DRIVER smtp MAIL HOST mail mydomain com MAIL PORT 465 took from m
  • 隐式转换没有警告

    g sizeofint cpp std c 11 Wconversion Wall Wextra Werror pedantic errors include
  • Django 的 Cron 示例

    我在互联网上搜索了 Django 中计划作业的工作示例 但我只能找到如何做 但没有给出例子 有人可以分享 Django 框架使用 cron 运行计划任务的工作示例吗 首先创建一个自定义管理命令 该命令将用于将任务添加到 crontab 这是
  • 尝试在 Microsoft Access 中制作高效的日历

    我正在开发一个设备管理系统 前端使用 MS Access mdb 文件 后端使用 SQL Server 2008 如果需要 我可以将前端转换为 MS Access 2010 文件 我创建了一个日历表单 用户可以在其中查看哪些设备已预订 注销
  • 从 Outlook 加载项中获取 HTTP

    我需要调用外部 Web 服务 以便我的外接程序与我们公司的 Java servlet 进行通信 我尝试使用 JavaScriptXMLHttpRequest var http new XMLHttpRequest http open GET
  • 在 Scala 常规类中使用 Lenses

    大多数流行的 Scala JSON 库都能够序列化和反序列化为案例类 不幸的是 在 Scala 2 11 发布之前 案例类可以拥有的参数数量是有限制的 最多 22 个 作为超过此限制的解决方法 可以使用常规类 例如 如何使用 non cas
  • 从具有重复键的字符串创建 dict/json Python

    我有一个可以解析为 JSON 或 dict 对象的字符串 我的字符串变量如下所示 my string variable a 1 b b1 1 b2 2 b b1 3 b2 2