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

如何利用itertools.product生成3个字典列表的全组合字典列表?

解决字典列表的全组合合并问题

嘿,你找对工具啦!itertools.product就是干这个的,你之前没成功应该是差了字典合并这一步。咱们直接上代码,一步一步来:

完整解决方案

首先导入需要的模块,然后用笛卡尔积生成所有组合,再把每个组合里的字典合并成一个新字典:

import itertools

# 给定的三个字典列表
products = [{'product':'product1'},{'product':'product2'},{'product':'product3'},{'product':'product4'}]
sales = [{'sale':'sale1'},{'sale':'sale2'}]
invoices = [{'invoice':'invoice1'},{'invoice': 'invoice2'},{'invoice':'invoice3'}]

# 生成所有笛卡尔积组合,再合并每个组合里的字典
result = [
    {**p, **s, **i} 
    for p, s, i in itertools.product(products, sales, invoices)
]

# 打印结果(可选,验证用)
for item in result:
    print(item)

代码解释

  • itertools.product(products, sales, invoices):会生成三个列表元素的所有笛卡尔积组合,每个组合是一个包含三个字典的元组(比如({'product':'product1'}, {'sale':'sale1'}, {'invoice':'invoice1'}))。
  • {**p, **s, **i}:这是Python中合并多个字典的常用方式(兼容Python 3.5+),把三个字典的键值对合并到一个新字典里。如果你的Python版本是3.9及以上,也可以用更简洁的语法:p | s | i。

输出示例

运行代码后,你会得到所有可能的组合,比如开头几个会是:

{'product': 'product1', 'sale': 'sale1', 'invoice': 'invoice1'}
{'product': 'product1', 'sale': 'sale1', 'invoice': 'invoice2'}
{'product': 'product1', 'sale': 'sale1', 'invoice': 'invoice3'}
{'product': 'product1', 'sale': 'sale2', 'invoice': 'invoice1'}
...

这样就完美得到你想要的全组合字典列表啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:26:02