不能按需要迭代嵌套for循环python可能是一个简单的mis

2024-09-30 01:25:17 发布

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

我尝试了下面的代码:目的是生成一个字典,其中每个键都有一个列表作为值。第一次迭代进行得很顺利,并根据需要生成项,但是第二个循环嵌套for循环没有按预期生成列表。你知道吗

请帮我用这个简单的代码。一定是出了什么问题,代码如下:

 schop = [1, 3, 1, 5, 6, 2, 1, 4, 3, 5, 6, 6, 2, 2, 3, 4, 4, 5]
 mop =   [1, 1, 2, 1, 1, 1, 3, 1, 2, 2, 2, 3, 2, 3, 3, 2, 3, 3]
 mlist = ["1","2","3"]
 wmlist=zip(mop,schop)

 title ={}
 for m in mlist:
     m = int(m)
     k=[]
     for a,b in wmlist:
         if a == m:
            k.append(b)
     title[m]=k
 print(title)

结果如下:

title: {1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}

为什么第二个键和第三个键的列表是空的?你知道吗

谢谢!你知道吗


Tags: 代码in目的列表forif字典title
2条回答

在python2中,您的代码会像您期望的那样工作,在python2中zip创建元组列表。你知道吗

在python3中,zip是一个迭代器。一旦您对它进行迭代,它就会耗尽,因此您的第二个和第三个for循环将没有任何内容可供迭代。你知道吗

这里最简单的解决方案是从迭代器创建一个列表:

wmlist = list(zip(mop,schop))

我认为您必须考虑的最好的事情是您安装的python版本。 这是我用python2中的代码获得的输出: enter image description here

{1: [1, 3, 5, 6, 2, 4], 2: [1, 3, 5, 6, 2, 4], 3: [1, 6, 2, 3, 4, 5]}

但对于Python3,我得到的答案是:

enter image description here

{1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}

如果您确信您拥有正确的定义,那么只需考虑代码中的缩进。祝你好运!!你知道吗

相关问题 更多 >

    热门问题