Chr*_*ris 8 python dictionary cartesian-product
我有一本字典:
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
Run Code Online (Sandbox Code Playgroud)
我想创建两者的笛卡尔积,以便得到每个可能对的元组.
output: [(1,10),(1,20),(1,30),
(2,10),(2,20),(2,30),
(3,10),(3,20),(3,30)]
Run Code Online (Sandbox Code Playgroud)
似乎有一种简单的方法可以做到这一点,如果我有三个项目,它会扩展.有点像动态循环次数.感觉像我错过了一个明显的方法来做到这一点......
Gre*_*ill 12
该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)]
Run Code Online (Sandbox Code Playgroud)
如果您需要控制生成的元组的顺序,您可以这样做
itertools.product(mydict['item1'], mydict['item2'])
Run Code Online (Sandbox Code Playgroud)