python - 如何获得作为字典中值的列表的笛卡尔积?

标签 python dictionary cartesian-product

<分区>

我有一本字典:

mydict = {'item1':[1,2,3],'item2':[10,20,30]}

我想创建两者的笛卡尔积,以便获得每个可能对的元组。

output: [(1,10),(1,20),(1,30),
         (2,10),(2,20),(2,30),
         (3,10),(3,20),(3,30)]

似乎有一种简单的方法可以做到这一点,如果我有三个项目,它就会扩展。有点像循环的动态数量。感觉我缺少一个明显的方法来做到这一点......

最佳答案

itertools.product()函数将执行此操作:

>>> import itertools
>>> mydict = {'item1':[1,2,3],'item2':[10,20,30]}
>>> list(itertools.product(*mydict.values()))
[(10, 1), (10, 2), (10, 3), (20, 1), (20, 2), (20, 3), (30, 1), (30, 2), (30, 3)]

如果你需要控制结果元组的顺序,你可以这样做

itertools.product(mydict['item1'], mydict['item2'])

关于python - 如何获得作为字典中值的列表的笛卡尔积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228015/

相关文章:

python - 如何递归地编写嵌套 for 循环?

Python合并2个字典而不覆盖

python - 字典的笛卡尔积

python - 用字典中的新值替换字符串时遇到问题

python - 如何正确读取groupby结果生成的csv文件?

python - Matplotlib 扩大x轴标签之间的空间

python - 使用字符串元组更新 Python 字典以设置(键,值)失败

java - 如何初始化静态 map ?

python - Dictionary of lists 到 Dictionary

python - 从两个大列表的笛卡尔积创建一个 pandas DataFrame