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

Python如何生成字典中不同长度列表的所有任意排列组合

实现方案

核心逻辑

  • 遍历所有可选的键数量k,取值范围为1到字典总键数
  • 对每个k,生成所有长度为k的键的排列,覆盖任意部分键、任意顺序的需求
  • 对每个排列对应的多组值列表,取笛卡尔积得到所有值的组合
  • 将每个值组合按顺序拼接为空格分隔的字符串,存入结果集

完整代码

from itertools import permutations, product

def generate_all_keywords(input_dict):
    all_keys = list(input_dict.keys())
    all_keywords = []
    # 遍历所有可选的键数量,从1到总键数
    for k in range(1, len(all_keys) + 1):
        # 生成所有长度为k的键的排列,覆盖任意选键、任意顺序的需求
        for key_perm in permutations(all_keys, k):
            # 拿到当前排列对应的所有值列表
            selected_lists = [input_dict[key] for key in key_perm]
            # 取笛卡尔积得到所有值组合,每个组合从各列表各取1个值
            for value_combo in product(*selected_lists):
                # 拼接为空格分隔的字符串
                all_keywords.append(" ".join(value_combo))
    # 如果需要去重,可以替换为 return list(set(all_keywords))
    return all_keywords

测试示例

# 用你给出的结构测试
test_dict = {
    'basis1': ['key11', 'key12'],
    'basis2': ['key21'],
    'basis3': ['key31', 'key32']
}

result = generate_all_keywords(test_dict)
print(result)

该实现不需要手动预设任何formula,字典键的数量任意增减都可以直接适配,完全覆盖你需要的所有组合场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:06:03