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

如何遍历字典,基于前值按1.05倍率生成指定长度的迭代序列?

实现按指定长度生成复利增长的字典值列表

需求说明

给定样本数据集:

{'data1':200, 'data2':500}

需要为每个键生成一个长度为指定数值(示例中为2)的列表,列表第一个元素是原始值,后续每个元素由前一个值乘以1.05(即5%增长率)得到。当指定长度为2时,预期输出:

{'data1':[200,210], 'data2':[500, 525]}

实现思路

  • 核心逻辑拆解:每个列表的元素本质是初始值乘以1.05的幂次,第n个元素(从0开始计数)为初始值 * (1.05)^n,列表长度等于指定的范围值。
  • 遍历处理字典:对原字典的每一对键值,生成对应的增长序列列表。
  • 重组结果字典:将生成的键与序列列表组合,形成最终的结果字典。

代码实现

基础循环版本(易理解)

def generate_growth_dict(original_dict, sequence_length):
    result = {}
    for key, initial_val in original_dict.items():
        current_val = initial_val
        growth_sequence = []
        for _ in range(sequence_length):
            # 可根据需求添加round()保留小数位数,比如round(current_val, 2)
            growth_sequence.append(current_val)
            current_val *= 1.05
        result[key] = growth_sequence
    return result

# 测试示例
sample_data = {'data1':200, 'data2':500}
print(generate_growth_dict(sample_data, 2))
# 输出: {'data1': [200, 210.0], 'data2': [500, 525.0]}

列表推导式版本(简洁高效)

利用Python的字典推导和列表推导简化代码:

def generate_growth_dict(original_dict, sequence_length):
    return {
        key: [initial_val * (1.05)**i for i in range(sequence_length)]
        for key, initial_val in original_dict.items()
    }

# 测试示例
sample_data = {'data1':200, 'data2':500}
print(generate_growth_dict(sample_data, 25))

注意事项

  • 如果需要避免浮点数精度问题或统一格式,可以在生成元素时使用round()函数,例如round(initial_val * (1.05)**i, 2)保留两位小数。
  • 若指定的序列长度为1,结果中每个键对应的列表仅包含原始初始值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:35:28