我有一本用Python编写的集合词典

dct={'k1':{1,2,3,4},'k2':{100,200},'k3':{1000,2000,3000,4000},'k4':{25,50}}

我想找出所有可能的组合的笛卡尔乘积,比方说3个键,所以

'k1','k2','k3' >> product({1,2,3,4}, {100,200}, {1000,2000,3000,4000})
'k1','k2','k4'>> product({1,2,3,4}, {100,200}, {25,50})
etc

我在下面得到的代码可以工作,但看起来并不那么像Python 一样,我想知道是否有更好的解决方案,也许使用*来解压词典.我的解决方案是固定的3个组合,一个通用的解决方案,可以满足n个组合将是有趣的…

for x,y,z in combinations(dct.keys(),3):
    for p in product(dct[x],dct[y],dct[z]):

推荐答案

使用combinations中的值.获取元组中的返回值,并在对product的调用中解压该元组.

from itertools import combinations, product

dct = {'k1': {1, 2, 3, 4}, 'k2': {100, 200}, 'k3': {1000, 2000, 3000, 4000},
       'k4': {25, 50}}

for combi in combinations(dct.values(), 3):
    for p in product(*combi):
        print(p)

Python相关问答推荐

如何确保Flask应用程序管理面板中的项目具有单击删除功能?

如何循环循环的每个元素并过滤掉Python rame中的条件

在Python中是否可以输入使用任意大小参数列表的第一个元素的函数

Python在通过Inbox调用时给出不同的响应

Odoo onchange for invoice_Status of sale事件.订单未触发

GEKKO:已知延迟的延迟系统的参数估计

Altair -箱形图边界设置为黑色,中线设置为红色

大小为M的第N位_计数(或人口计数)的公式

如何在solve()之后获得症状上的等式的值

实现自定义QWidgets作为QTimeEdit的弹出窗口

形状弃用警告与组合多边形和多边形如何解决

多指标不同顺序串联大Pandas 模型

如何启动下载并在不击中磁盘的情况下呈现响应?

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

使用Python查找、替换和调整PDF中的图像'

网格基于1.Y轴与2.x轴显示在matplotlib中

matplotlib + python foor loop

使用Openpyxl从Excel中的折线图更改图表样式

从旋转的DF查询非NaN值

为什么我的sundaram筛这么低效