You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求优化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:53:14