首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在json中合并重复的键

在json中合并重复的键
EN

Stack Overflow用户
提问于 2019-01-25 00:28:42
回答 1查看 1.9K关注 0票数 1

我有一个像这样的json:

代码语言:javascript
复制
{
  "course1": [
    {
      "courseName": "test",
      "section": "123",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course2": [
    {
      "courseName": "test",
      "section": "456",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course2": [
    {
      "courseName": "test",
      "section": "789",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course2": [
    {
      "courseName": "test",
      "section": "1011",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course3": [
    {
      "courseName": "test",
      "section": "1213",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course3": [
    {
      "courseName": "test",
      "section": "1415",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ]
}

我希望组合任何块/对象/列表(我不知道它叫什么),使它们具有相同的键值。就像这样:

代码语言:javascript
复制
{
  "course1": [
    {
      "courseName": "test",
      "section": "123",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course2": [
    {
      "courseName": "test",
      "section": "456",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    },
    {
      "courseName": "test",
      "section": "789",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    },
    {
      "courseName": "test",
      "section": "1011",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ],
  "course3": [
    {
      "courseName": "test",
      "section": "1213",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    },
    {
      "courseName": "test",
      "section": "1415",
      "academicHours": "3",
      "day1": "1",
      "room1": "0145 03 1 B 015"
    }
  ]
}

我如何使用python中的正则表达式来完成这个任务?或者任何正则表达式查询?

此外,我尝试使用json.dumps()并从那里开始工作,但由于某种原因,当我将它与任何包含阿拉伯字符的json一起使用时,它就会抓狂,把整件事情搞砸。所以我很不幸地被正则表达式困住了。

谢谢你的帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 01:29:53

stdlib json提供了一个钩子,允许使用重复键解码对象。这个简单的“扩展”钩子应该适用于示例数据:

代码语言:javascript
复制
def myhook(pairs):
    d = {}
    for k, v in pairs:
        if k not in d:
          d[k] = v
        else:
          d[k] += v
    return d

mydata = json.loads(bad_json, object_pairs_hook=myhook)

虽然JSON规范中没有任何东西不允许重复的键,但首先应该避免它:

1.1。本文件中使用的关键词“必须”、“不得”、“要求”、“应”、“不应”、“不应”、“建议”、“可”和“可选”应解释为RFC2119所述。

..。

  1. 对象

对象结构表示为围绕零或多个名称/值对(或多个成员)的一对花括号。名字是字符串。在每个名称之后加上一个冒号,将名称与值分隔开来。一个逗号将值与下面的名称分隔开来。对象中的名称应该是唯一的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54357405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档