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

Python数组迭代追加字典元素的更高效替代方案

问题背景

处理长度在1000到10000之间的多个等长数组,需要返回名为points的数组,数组每个元素为字典结构。希望找到类似pandas数据框.loc方法的列规则设置实现,避免使用迭代追加的方式生成目标数组。

当前实现代码

times = [000000001, 000034000, ...]
highs = [2, 1, ...]
lows = [-2, -3, ...]

points = []
for i in range(0, len(times)):
    points.append({"time": times[i], "low": lows[i], "high": highs[i]})

现有参考方案

之前看到用pandas构造数据框的思路:

import pandas as pd
df = pd.DataFrame({"time": times, "low": lows, "high": highs})

该方案生成的数据框格式如下:

Time    High    Low
0   100000001   1   -1
1   100000002   3   -4
2   100000003   4   -5

可落地的实现方案

  • pandas方案(适合已引入pandas依赖的场景)
    不需要手动写循环,在构造完数据框后直接调用to_dict('records')方法即可一键生成符合要求的points数组,同时支持你需要的.loc列操作规则,可先完成列值修改、行过滤等操作后再转换结果,在数据量上万的场景下性能远高于原生Python循环:

    import pandas as pd
    df = pd.DataFrame({"time": times, "low": lows, "high": highs})
    # 此处可正常使用df.loc完成各类列/行操作
    points = df.to_dict('records')
    
  • 原生Python方案(无第三方依赖)
    不需要额外安装库,用zip配对数组对应元素配合列表推导实现,写法比显式循环追加更简洁,性能也略高于原有实现:

    points = [{"time": t, "low": l, "high": h} for t, l, h in zip(times, lows, highs)]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:30:02