2024-03-28 11:53:00 发布
网友
我有一本字典:
mydict = {'item1':[1,2,3],'item2':[10,20,30]}
我想创建二者的笛卡尔积,这样我就可以得到每一个可能对的元组。在
似乎有一个简单的方法可以做到这一点,如果我有三个项目,它就可以扩展。有点像动态循环数。感觉我错过了一个很明显的方法。。。在
^{}函数将执行以下操作:
>>> 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)]
如果需要控制结果元组的顺序,可以这样做
你也可以使用两个循环来强制它
mydict = {'item1':[1,2,3],'item2':[10,20,30]} x = [] for i in mydict['item1']: for j in mydict['item2']: x.append((i,j))
这段代码所做的就是遍历mydict['item1']中的所有项,然后遍历mydict['item2']中的每个项,然后在新列表中追加一对。在
mydict['item1']
mydict['item2']
它会给你这个结果:
你可以做两个for循环。 -第一个将跟踪第一个项目列表的索引位置。 -第二个循环将遍历第二个循环中的每个项目。 -在它运行完所有项之后,第一个for循环将递增到其列表中的下一个项,第二个循环将再次运行第二个列表,依此类推
^{} 函数将执行以下操作:
如果需要控制结果元组的顺序,可以这样做
^{pr2}$你也可以使用两个循环来强制它
这段代码所做的就是遍历
mydict['item1']
中的所有项,然后遍历mydict['item2']
中的每个项,然后在新列表中追加一对。在它会给你这个结果:
^{pr2}$你可以做两个for循环。 -第一个将跟踪第一个项目列表的索引位置。 -第二个循环将遍历第二个循环中的每个项目。 -在它运行完所有项之后,第一个for循环将递增到其列表中的下一个项,第二个循环将再次运行第二个列表,依此类推
相关问题 更多 >
编程相关推荐