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

如何在字典构成的列表中按token值快速查找目标字典

实现基于token的O(1)字典查询方案

场景说明

现有存储字典的大型列表,每个字典携带唯一的token字段,原始数据示例:

large_list = [{"token": "4kj13", "value1": 10, "value2": 20},
              {"token": "hm9gm", "value1": 15, "value2": 30}]

目标是通过token直接定位对应字典,实现类似large_list["4kj13"]["value1"]的直接取值效果,约束如下:

  • 不可修改原始JSON输入格式,允许构建中间数据结构
  • 字典内部结构复杂,无法转换为表格类结构存储
  • 所有token值全局唯一

现有方案的不足

构建token到列表索引映射的方案可以实现需求,但存在两个明显问题:

# 索引映射方案示例
token2index = {"4kj13": 0, "hm9gm": 1}
# 取值需要两次查询:先查索引,再从列表取字典
print(large_list[token2index["4kj13"]]["value1"])
  • 多一次列表索引查询,存在不必要的性能损耗
  • 如果原列表发生插入、删除、重排序操作,所有索引映射会直接失效,维护成本极高

最优实现方案

直接构建token到原字典对象的映射字典即可。Python中字典为引用类型,映射中存储的是原字典的内存引用,不会额外拷贝字典内容,完全不会因为字典结构复杂产生额外内存开销。

构建映射

一行代码即可完成初始化:

token_map = {item["token"]: item for item in large_list}

取值方式

完全匹配预期的直接取值效果:

print(token_map["4kj13"]["value1"])  # 输出10

方案优势

  • 性能更高:单次哈希查询即可拿到目标字典,比索引映射少一层跳转,十万级以上数据量下性能差异明显
  • 鲁棒性更强:原列表的顺序调整、元素插入/删除操作不会影响已有映射关系,只要原字典对象不被销毁,映射就一直有效
  • 维护简单:后续列表新增元素时同步执行token_map[new_item["token"]] = new_item,删除元素时执行del token_map[target_token]即可完成同步
  • 完全符合约束:没有修改任何原始输入结构,也不需要改动字典内部的复杂字段

注意:不要随意修改映射中取出的字典的token字段,否则会导致映射键和实际内容不一致。如果需要修改token,同步更新映射的键即可。

内容的提问来源于stack exchange,提问作者adroit.levees.0r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:33:16