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
相关产品推荐
相关产品推荐

