Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反转大型JSON字典_Python_Arrays_Json_Dictionary - Fatal编程技术网

Python 反转大型JSON字典

Python 反转大型JSON字典,python,arrays,json,dictionary,Python,Arrays,Json,Dictionary,我有一个JSON字典,包含以下形式的多个条目(大约800万): {"Some_String": {"Name0": 1, "Name1": 1, "Name42": 2, "Name5": 2, ... }, ...} 它包含用于引用离散命名实体的字符串,以及该字符串引用该名称的次数计数 我想反转映射,使Name0后面跟着引用它的字符串(保持计数)。名称可能出现在多个字符串条目中 {"Name0": {"Some_String": 1, "Some_other_string": 1,... }

我有一个JSON字典,包含以下形式的多个条目(大约800万):

{"Some_String": {"Name0": 1, "Name1": 1, "Name42": 2, "Name5": 2, ... }, ...}
它包含用于引用离散命名实体的字符串,以及该字符串引用该名称的次数计数

我想反转映射,使Name0后面跟着引用它的字符串(保持计数)。名称可能出现在多个字符串条目中

{"Name0": {"Some_String": 1, "Some_other_string": 1,... }, ...}
我的问题是:是否有一些JSON功能可以让我高效地做到这一点

我的简单方法是将每个名称添加到一个2D数组中(在找到字符串和计数时将其添加到该数组中)

最初运行速度相当快,但随着数组大小的增加,运行时间减少(线性搜索)

我意识到我可以直接将这些数据添加到一个新的字典中,但我不知道随着字典大小的增加,这是否真的会提高添加新项目的效率

谢谢

类似于

from collections import defaultdict
result = defaultdict(dict)

for somestring, namesdict in initialdata.items():
    for name, amount in namesdict.items():
        result[name][something] = amount

可以,但是有了800万项,现在可能是查看数据库的时候了。

这将是将JSON数据放入关系数据库的完美情况。JSON只是一种序列化格式,一种将数据描述为文本的方式。确实没有任何“JSON功能”来更改数据。这是Python 2还是Python 3?@Tomalak,谢谢,我们将研究如何将其变成数据库。@RemcoGerlich Python 3。我想它可能没有什么功能,就像我自己看起来的那样,我希望可能有一些更像python的方法来做我尝试过的事情,这样会更有效率。谢谢-我可能会查看数据库。
from collections import defaultdict
result = defaultdict(dict)

for somestring, namesdict in initialdata.items():
    for name, amount in namesdict.items():
        result[name][something] = amount