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

如何遍历任意长度字典中各键对应整数1到最大值的所有组合

解决方案

直接用Python标准库itertools.product实现笛卡尔积遍历即可,天然适配任意长度的字典,无需写嵌套逻辑:

import itertools

def generate_all_combinations(input_dict):
    # 提取字典的键列表,以及每个键对应的取值范围(1到对应最大值,包含两端)
    keys = list(input_dict.keys())
    value_ranges = [range(1, max_val + 1) for max_val in input_dict.values()]
    # 遍历所有笛卡尔积组合,生成对应字典
    for values in itertools.product(*value_ranges):
        yield dict(zip(keys, values))

使用示例

# 三键字典测试
myDict = {"a":1,"b":2,"c":3}
for combo in generate_all_combinations(myDict):
    print(combo)

# 四键字典测试
myDict2 = {"a":1,"b":2,"c":3,"d":5}
for combo in generate_all_combinations(myDict2):
    # 也可以直接对返回的字典做修改操作,符合你的使用习惯
    # combo["c"] = 2
    print(combo)

说明

  • itertools.product支持接收任意个可迭代对象作为参数,返回所有元素的笛卡尔积组合,完全匹配你需要的全组合遍历需求
  • 生成器返回的每个组合都是独立的字典对象,你可以直接对其做修改操作
  • 无需调整代码即可适配任意键数量的输入字典,时间复杂度为所有键的最大值乘积,和手动写嵌套循环的效率一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:45:03