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

Locust/Python:如何将列表1的ID值替换到列表2的id字段中?

实现列表ID替换的方法

根据你的需求,这里提供两种常见的实现方式,具体取决于你想要的最终结果:

方式一:生成包含所有TS_ID的新列表

如果需要基于原values中的字典结构,为每个TS_IDs里的ID生成一个独立的字典项,最终得到一个长度和TS_IDs一致的新列表,可以用以下代码:

TS_IDs = [
    '10158',
    '10159',
    '10174'
]

values = [
    {
        "id": 10017,
        "values": [
            {
                "from": "2022-10-30T12:00:00Z",
                "to": "2022-10-30T13:00:00Z",
                "value": 15
            },
            {
                "from": "2022-10-30T13:00:00Z",
                "to": "2022-10-30T14:00:00Z",
                "value": 16
            }
      ]
    }
]

# 循环实现
result = []
for ts_id in TS_IDs:
    # 复制原字典结构,避免修改原始数据
    new_item = values[0].copy()
    # 将字符串类型的TS_ID转为整数,匹配原id字段类型
    new_item['id'] = int(ts_id)
    result.append(new_item)

# 或者用更简洁的列表推导式
result = [{'id': int(ts_id), 'values': values[0]['values'].copy()} for ts_id in TS_IDs]

方式二:直接修改原values列表

如果需要直接在原values列表中替换或新增ID项,比如先替换现有项的id,超出原长度则新增字典,可以用以下代码:

for index, ts_id in enumerate(TS_IDs):
    if index < len(values):
        # 替换现有字典的id
        values[index]['id'] = int(ts_id)
    else:
        # 原列表长度不足时,新增字典项
        new_item = values[0].copy()
        new_item['id'] = int(ts_id)
        values.append(new_item)

注意事项

  • 因为TS_IDs中的元素是字符串类型,而原id字段是整数,所以需要用int()做类型转换。
  • 使用copy()方法是为了避免多个字典项共享同一个子列表引用,防止后续修改子列表时影响所有项。如果不需要修改子列表内容,也可以省略copy()直接引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:07:04