我有一个包含多个条目(大约8百万)的JSON字典,每个条目的形式如下:
{"Some_String": {"Name0": 1, "Name1": 1, "Name42": 2, "Name5": 2, ... }, ...}
它包含了用于引用离散命名实体的字符串,以及该名称被该字符串引用的次数。
我想反转映射,使得Name0后面跟随引用它的字符串(保持计数)。一个名称可能会出现在多个字符串条目中。
{"Name0": {"Some_String": 1, "Some_other_string": 1,... }, ...}
我的问题是:是否有一些JSON功能可以让我有效地完成这个任务?
我的天真的方法涉及将每个名称添加到一个二维数组中(在找到字符串和计数后将其添加到该数组中)。
最初,这运行得非常快,但随着数组大小的增加,运行时间减少(线性搜索)。
for string in list(surface.keys()):
for count, name in zip(surfacs[string].values(),surface[string].keys()):
if name in pages:
surface_count_list[pages.index(name)].append([string, count])
else:
pages.append(name)
surface_count_list.append([string, count])
我意识到我可以直接将这些数据添加到一个新的字典中,但我不确定这样做是否会在字典大小增加时真正提高添加新项的效率。
谢谢。