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

如何根据索引排列与索引字典生成各索引的排列组合列表?

解决方案

代码实现(匹配你的预期结果)

import itertools

# 注意不要用dict作为变量名,避免覆盖内置类型
my_dict = {
    1: ['A', 'B'],
    2: ['C', 'D'],
    3: ['E', 'F']
}

# 为每个索引对应的元素列表生成所有可能的排列
element_perm_list = [list(itertools.permutations(items)) for items in my_dict.values()]

# 生成所有排列组合的笛卡尔积,再将每个组合拼接成完整列表
final_result = [list(itertools.chain.from_iterable(combination)) for combination in itertools.product(*element_perm_list)]

# 查看结果
for res in final_result:
    print(res)

代码说明

  1. 生成元素排列:用itertools.permutations对字典中每个值(元素列表)生成所有可能的排列,比如['A','B']会生成('A','B')和('B','A')。
  2. 笛卡尔积组合:用itertools.product生成这些元素排列的笛卡尔积,也就是每个组合包含从每个元素排列列表中选一个排列。
  3. 拼接结果:用itertools.chain.from_iterable把组合里的多个排列元组拼接成一个连续的列表,再转换成列表类型。

如果需要考虑索引的排列

如果你的需求确实要结合索引的排列(比如先处理索引2再处理1),可以用下面的代码:

import itertools

my_dict = {
    1: ['A', 'B'],
    2: ['C', 'D'],
    3: ['E', 'F']
}

# 生成索引的所有排列
index_permutations = itertools.permutations(my_dict.keys())

final_result = []
for index_order in index_permutations:
    # 按当前索引顺序获取对应的元素列表
    ordered_element_lists = [my_dict[idx] for idx in index_order]
    # 生成每个元素列表的排列
    elem_perms = [list(itertools.permutations(items)) for items in ordered_element_lists]
    # 拼接所有组合
    for comb in itertools.product(*elem_perms):
        final_result.append(list(itertools.chain.from_iterable(comb)))

# 查看结果
for res in final_result:
    print(res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:15:32