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

如何将工作代码中的列表/元组替换为字典以提升性能?

用字典替换列表/元组优化大数据量计算性能

原代码通过列表和元组存储计算结果,但在大数据量场景下性能受限,需要将存储结构替换为字典以提升性能,同时需满足以下要求:

  • 保留calc_x和calc_y独立变量,可单独在append中调用
  • 新的new变量支持像原代码中print_x = [tuple(i[1]) for i in new]这样的方式按需提取数值

原列表元组版本代码

mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5], 
         ('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4], 
         ('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]}

new = []

for key, value in mylist.items():

    # 创建变量并执行计算
    calc_x= sum(value)/ len(value)
    calc_y = (calc_x *100) / 2

    # 创建包含3个元组的列表
    if calc_x > 0.1:
        new.append([[key], [calc_x], [calc_y]])

print(new)
print(" ")

# 提取calc_x示例
print_x = [tuple(i[1]) for i in new]
print(print_x)

优化后的字典版本代码

mylist = {('Jack', 'Grace', 8, 9, '15:00'): [0, 1, 1, 5], 
         ('William', 'Dawson', 8, 9, '18:00'): [1, 2, 3, 4], 
         ('Natasha', 'Jonson', 8, 9, '20:45'): [0, 1, 1, 2]}

new = []

for key, value in mylist.items():
    # 保留独立计算变量
    calc_x = sum(value) / len(value)
    calc_y = (calc_x * 100) / 2

    if calc_x > 0.1:
        # 用字典存储结构,键名明确对应数据类型
        new.append({
            'key': key,
            'calc_x': calc_x,
            'calc_y': calc_y
        })

print(new)
print(" ")

# 按需提取calc_x,逻辑更直观,性能更优
print_x = [(item['calc_x'],) for item in new]
print(print_x)

# 按需提取calc_y示例
print_y = [(item['calc_y'],) for item in new]
print(print_y)

# 提取key示例
print_keys = [(item['key'],) for item in new]
print(print_keys)

优化说明

  1. 保留独立变量:calc_x和calc_y依然作为独立计算变量存在,计算逻辑完全不变,只是将结果存入字典的对应键中。
  2. 按需调用支持:通过字典的键名直接访问对应值,相比原代码通过索引i[1]提取,不仅逻辑更清晰,在大数据量下字典的键查找性能远高于列表的索引遍历。示例中的print_x通过列表推导式遍历new中的每个字典,提取calc_x并转为元组,实现了和原代码一致的输出效果。
  3. 性能提升:字典的哈希表结构使得键查找时间复杂度为O(1),远优于列表索引遍历在复杂场景下的性能,尤其在大数据量处理时优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:45:42