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

如何生成分组Python字典的所有组合变体?

生成所有部件组合的通用方案

需求说明

我有一个由字典对象组成的列表的列表,每个嵌套列表对应一类部件的所有可选变体,需要生成包含所有可能部件组合的列表。方案必须满足:

  • 通用适配:不能硬编码部件组数量,支持2种及以上部件组的场景
  • 灵活可变:每个部件组的变体数量可以任意调整

输入示例

options = [
    [
        # 座椅部件
        {'index': 0, 'name': 'Seat A'},
        {'index': 1, 'name': 'Seat B'},
        {'index': 2, 'name': 'Seat C'},
        {'index': 3, 'name': 'Seat D'},
        {'index': 4, 'name': 'Seat E'}
    ],
    [
        # 桌腿部件
        {'index': 0, 'name': 'Legs A'},
        {'index': 1, 'name': 'Legs B'},
        {'index': 2, 'name': 'Legs C'}
    ],
    [
        # 靠枕部件
        {'index': 0, 'name': 'Pillows A'},
        {'index': 1, 'name': 'Pillows B'},
        {'index': 2, 'name': 'Pillows C'}
    ]
]

此示例中,总组合数应为 5×3×3=45 种。

解决方案

方法1:使用标准库itertools.product(推荐)

Python标准库itertools中的product函数专门用于生成多个可迭代对象的笛卡尔积,完全匹配需求,代码简洁高效:

import itertools

def generate_variations(options):
    # 将product返回的元组转换为列表,得到目标格式
    return [list(combination) for combination in itertools.product(*options)]

# 调用示例
variations = generate_variations(options)
print(len(variations))  # 输出45,符合预期

方法2:手动实现笛卡尔积(无依赖)

如果不想依赖标准库,可以通过迭代的方式手动实现笛卡尔积逻辑:

def generate_variations(options):
    # 初始化结果为包含空列表的列表,作为组合的起点
    result = [[]]
    for part_group in options:
        temp = []
        # 对现有每个组合,添加当前部件组的所有变体
        for existing_combo in result:
            for part in part_group:
                temp.append(existing_combo + [part])
        result = temp
    return result

# 调用示例
variations = generate_variations(options)
print(len(variations))  # 输出45,符合预期

结果验证

打印前3个组合,验证格式是否符合要求:

for combo in variations[:3]:
    print(combo)

输出:

[{'index': 0, 'name': 'Seat A'}, {'index': 0, 'name': 'Legs A'}, {'index': 0, 'name': 'Pillows A'}]
[{'index': 0, 'name': 'Seat A'}, {'index': 0, 'name': 'Legs A'}, {'index': 1, 'name': 'Pillows B'}]
[{'index': 0, 'name': 'Seat A'}, {'index': 0, 'name': 'Legs A'}, {'index': 2, 'name': 'Pillows C'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:35:19