【发布时间】:2013-10-08 18:30:13
【问题描述】:
我有多个包含需要合并的关系数据的 json 文件,每个文件都有一条记录,其中 commonkey 是所有文件中的公共键,在下面的示例中 a0 ,a1 是公共键。值是嵌套的如下所示的多个键的字典,如 Key1、key2 等,我需要合并多个 json 文件并得到输出,如 dboutput.json 所示,文件名作为合并操作中的索引。这样的问题是一个related question,它合并了丢失的信息,但在我的情况下,我不想要任何替换现有键或跳过更新的更新,以防点击现有键,创建另一个由文件名索引的嵌套字典,如下所示:
例子:
文件 db1.json:
“a0”:{ “公鸡”:[ "a1", “父键值 1” ], "key1": "kvalue1", “key2”:“kvalue2” “keyp”:“kvalue2abc” }, “a1”:{ ... }文件 db2.json:
“a0”:{ “公鸡”:[ "a1", “父键值 1” ], "key1": "kvalue1xyz", "key2": "kvalue2", “key3”:“kvalue2” }, “a1”:{ ... }期望的输出
文件 dboutput.json
“a0”:{ “公鸡”:[ "a1", “父键值 1” ], "key1": {"db1":"kvalue1","db2":"kvalue1xyz"} , "key2": {"db1":"kvalue2","db2":"kvalue2"} , "key3": {"db2":"kvalue2"} “keyp”:{“db1”:“kvalue2abc”} }, “a1”:{ ... }那么如何进行这种无损合并呢?注意 "key2": {"db1":"kvalue2","db2":"kvalue2"} 即使 key\value 对相同,它们也需要单独存储。实际上,输出是所有输入文件的联合,并包含所有其他文件的所有条目。
还有
"commonkey": [
"a1",
"parentkeyvalue1"
],
所有文件都相同,因此无需重复
【问题讨论】:
-
您对待键
"a0"和"commonkey"与"key2"不同 -
@JanneKarila 你能说得清楚点吗?
-
我指出您在所需的输出中没有
"commonkey": {"db1": ["a1","parentkeyvalue1"], "db2": ["a1","parentkeyvalue1"]}。程序如何知道哪些键可以合并哪些不可以? -
@JanneKarila 因为 commonkey 很常见,不能重复,所有文件都一样
标签: python json dictionary merge union