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

如何在Python中基于变量字典生成全组合场景字典?

生成变量所有组合的场景字典

嘿,这个需求其实很常见,用Python的标准库就能轻松搞定!我给你一步步拆解实现方法:

核心思路

我们需要生成所有变量取值的笛卡尔积(也就是每个变量取一个值的所有可能组合),然后把每个组合映射成对应的场景字典。Python的itertools.product工具正好能帮我们完成笛卡尔积的生成,非常方便。

完整代码示例

import itertools

# 第一步:定义你的变量字典,key是变量名,value是该变量的所有可选值
variable_dict = {
    "color": ["red", "blue", "green"],
    "size": ["S", "M"],
    "material": ["cotton", "polyester"]
}

# 第二步:提取变量名和对应的可选值列表
keys = variable_dict.keys()
value_lists = variable_dict.values()

# 第三步:生成所有可能的取值组合(笛卡尔积)
# *value_lists 是把多个列表作为参数传入product
combinations = itertools.product(*value_lists)

# 第四步:将每个组合转换成场景字典
# 用zip把变量名和对应的值配对,再转成字典
scenarios = [dict(zip(keys, combo)) for combo in combinations]

# 可选:打印所有场景看看效果
for idx, scenario in enumerate(scenarios, 1):
    print(f"场景 {idx}: {scenario}")

代码解释

  • itertools.product(*value_lists):接收多个列表作为输入,返回所有列表元素的笛卡尔积,比如上面的例子会生成('red', 'S', 'cotton')、('red', 'S', 'polyester')等所有组合。
  • dict(zip(keys, combo)):把每个组合元组和变量名一一对应,转换成键值对形式的字典,也就是我们需要的场景。
  • 如果你的Python版本在3.7及以上,字典会保留原始的变量顺序;如果是更早的版本,想要保证顺序的话,可以用collections.OrderedDict替代普通字典。

特殊情况处理

如果某个变量只有一个可选值(比如"gender": ["male"]),itertools.product也会自动处理,这个变量会出现在所有场景中且取值固定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:32:35