为lis中的每个项目循环

2024-03-28 11:53:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典:

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

我想创建二者的笛卡尔积,这样我就可以得到每一个可能对的元组。在

^{pr2}$

似乎有一个简单的方法可以做到这一点,如果我有三个项目,它就可以扩展。有点像动态循环数。感觉我错过了一个很明显的方法。。。在


Tags: 项目方法字典动态mydict元组感觉item1
3条回答

^{}函数将执行以下操作:

>>> 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)]

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

^{pr2}$

你也可以使用两个循环来强制它

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']中的每个项,然后在新列表中追加一对。在

它会给你这个结果:

^{pr2}$

你可以做两个for循环。 -第一个将跟踪第一个项目列表的索引位置。 -第二个循环将遍历第二个循环中的每个项目。 -在它运行完所有项之后,第一个for循环将递增到其列表中的下一个项,第二个循环将再次运行第二个列表,依此类推

相关问题 更多 >