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

如何为含任意数量键的Python字典生成元素笛卡尔积组合列表?

解决任意键数字典的笛卡尔积字符串组合问题

你可以利用Python标准库中的itertools.product来实现通用的笛卡尔积计算,这个方法不需要依赖固定数量的嵌套循环,能适配任意键数的字典。

实现代码

import itertools

d = {
    's': ['a','b','c'], 
    'v': ['d','e'], 
    'r': ['g','h','i'],
}

# 获取字典中所有值的列表(Python 3.7+ 字典默认保留插入顺序)
value_groups = list(d.values())
# 计算笛卡尔积并拼接每个组合为字符串
result = [''.join(combination) for combination in itertools.product(*value_groups)]

print(result)

代码说明

  1. itertools.product(*value_groups):该函数接收多个可迭代对象作为参数,返回它们的笛卡尔积。这里通过*解包value_groups列表,把每个子列表作为独立参数传入,不管字典有多少个键,都能自动适配。
  2. ''.join(combination):itertools.product返回的每个组合是一个元组(比如('a', 'd', 'g')),用字符串的join方法可以把元组中的元素拼接成目标字符串。
  3. 列表推导式:批量处理所有笛卡尔积组合,最终生成你需要的字符串列表。

关于键的顺序

如果需要严格按照特定的键顺序生成组合(比如必须先s、再v、最后r),在Python 3.7之前的版本中字典是无序的,这时候可以手动指定键的顺序来获取对应的值列表:

# 指定键的顺序
key_order = ['s', 'v', 'r']
value_groups = [d[key] for key in key_order]

Python 3.7及之后的版本中,字典默认保留键的插入顺序,直接使用list(d.values())就能保持原顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:36:21