Python快速从JSON数据中批量查询匹配name对应id的高效方法
优化实现方案
核心优化逻辑是将JSON数据预处理为name到id的映射字典,把原来嵌套循环的O(N*M)时间复杂度降为O(N+M),N为JSON总数据量、M为待查询名称数量,性能提升幅度可达数百倍。
具体实现步骤:
- 加载JSON文件后,一次性遍历所有条目构建映射字典,5万条数据的构建开销在毫秒级
- 遍历待查询名称数组,直接从字典中取值,每次查询都是O(1)操作,数千次查询几乎无额外开销
完整代码示例:
import json file_name = "database.json" items = ['Cannonball', 'Cannon furnace','Bucket of wax'] id_array = [] # 加载JSON并构建映射字典 with open(file_name, 'r') as f: document = json.load(f) name_to_id = {entry['name']: entry['id'] for entry in document} # 批量查询id,以下代码兼容不存在的名称场景,不需要容错可直接取值 for item_name in items: if item_name in name_to_id: id_array.append(name_to_id[item_name])
如果你的name存在重复的情况,可以调整字典构建逻辑,把重复name对应的id存为列表即可。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

