我有一本字典:
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'])