请求优化JSON遍历统计代码:能否直接用字典/二维数组实现?
优化方案:单次遍历直接统计,大幅提升效率
你的原流程存在两次遍历+嵌套循环的问题,时间复杂度为O(n²),数据量越大效率越低。完全可以通过一次遍历直接用字典统计,或借助Python内置工具实现更高效简洁的处理——二维数组反而会增加复杂度,没必要用。
方案1:普通字典单次遍历统计
直接在遍历JSON数据的过程中完成计数,仅需一次遍历,时间复杂度O(n):
result = res.json() hits = result['hits']['hits'] vid_count_db = len(hits) print(vid_count_db) sensor_count = {} for hit in hits: sensor_id = hit["_source"]["sensor"] # 存在则计数+1,不存在则初始化为1 sensor_count[sensor_id] = sensor_count.get(sensor_id, 0) + 1 print(sensor_count)
方案2:用collections.Counter简化代码
Python内置的collections.Counter专门用于统计元素出现次数,代码更简洁:
from collections import Counter result = res.json() hits = result['hits']['hits'] vid_count_db = len(hits) print(vid_count_db) # 提取所有sensor_id后直接统计 sensor_ids = [hit["_source"]["sensor"] for hit in hits] sensor_count = Counter(sensor_ids) print(dict(sensor_count)) # 转为普通字典输出,也可直接使用Counter对象
优化优势说明
- 原代码嵌套循环会重复遍历所有数据(比如1000条数据要做1000×1000次比对),优化后仅需1次遍历(方案1)或2次无嵌套遍历(方案2),数据量越大效率提升越明显。
- 省去了中间列表
listsi的冗余存储,节省内存同时逻辑更清晰。
内容的提问来源于stack exchange,提问作者lone.wolf
相关产品推荐
相关产品推荐

