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

如何在Python列表嵌套字典中为元素新增取next start_len值的end_len键

实现方法

错误原因

你之前的实现逻辑偏差,枚举的是单个字典内部键值对的索引,因此得到的结果是start_len加字典内key的索引值,和你要取同列表下一个元素的start_len的需求完全不符。

最优实现

以下实现时间复杂度为O(n),n为所有start_len元素的总个数,没有多余计算开销:

方案1:直接修改原数据

inputt = [
    {'i': [{'start_len': 261}, {'start_len': 450}, {'start_len': 172}, {'start_len': 17}]},
    {'i': [{'start_len': 484}, {'start_len': 20}, {'start_len': 0}]}
]

for entry in inputt:
    sl_list = entry['i']
    list_len = len(sl_list)
    for idx, item in enumerate(sl_list):
        item['end_len'] = sl_list[idx+1]['start_len'] if idx < list_len - 1 else item['start_len']

# 验证输出
print(inputt)

方案2:保留原数据,生成新输出对象

如果不想修改原始输入数据,使用如下实现:

inputt = [
    {'i': [{'start_len': 261}, {'start_len': 450}, {'start_len': 172}, {'start_len': 17}]},
    {'i': [{'start_len': 484}, {'start_len': 20}, {'start_len': 0}]}
]
output = []
for entry in inputt:
    sl_list = entry['i']
    new_sl = []
    list_len = len(sl_list)
    for idx, item in enumerate(sl_list):
        new_item = item.copy()
        new_item['end_len'] = sl_list[idx+1]['start_len'] if idx < list_len -1 else new_item['start_len']
        new_sl.append(new_item)
    output.append({'i': new_sl})

# 验证输出
print(output)

两种方案运行后得到的结果都和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:07