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

如何高效比较JSONL文件中的字典列表与目标字符串列表?

高效筛选JSONL文件中符合条件的字典

原代码运行慢的核心问题在于列表的成员检查效率极低:list_of_strings是包含10万个元素的列表,每次执行obj[key] in list_of_strings都要遍历整个列表(时间复杂度O(10万)),100万次循环下来总操作量达到1e11级,这必然导致速度卡顿。

核心优化方案:把列表转成集合

集合(set)基于哈希表实现,成员检查的时间复杂度是O(1),只需要一次O(10万)的转换操作,后续每次检查都是常数时间,总操作量直接降到1e6+1e5,性能会有数量级的提升。

优化后的完整代码

matching_dicts = []
key = "field_1"  # 注意:原代码中key带空格,确认是否为目标字段名,若为笔误请修正

# 将字符串列表转换为集合,仅需一次转换
string_set = set(list_of_strings)

with jsonlines.open(file_path) as reader:
    for line_number, obj in enumerate(reader):
        # 用get方法减少一次字典键查找操作
        value = obj.get(key)
        if value is not None and value in string_set:
            matching_dicts.append((obj, line_number))

额外小优化说明

  • 用obj.get(key)替代key in obj and obj[key]:减少一次字典的键查找操作,虽然单步差异小,但100万次循环累积下来也能节省一点时间。
  • 确认key的正确性:原代码中key是"field_1 "(带末尾空格),如果这是输入错误,修正后能避免漏判符合条件的字典。

内容的提问来源于stack exchange,提问作者Abijah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:30:09