不能迭代嵌套for循环作为通缉-python-可能是一个简单的错误

Pep*_*eng 5 python nested-loops

我尝试过以下代码:目的是生成一个字典,其中每个键都有一个列表作为值.第一次迭代顺利进行并根据需要生成项目,但第二个循环(嵌套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)
Run Code Online (Sandbox Code Playgroud)

结果如下:

title: {1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}
Run Code Online (Sandbox Code Playgroud)

为什么第二个键和第三个键有一个空列表?

谢谢!

Thi*_*lle 7

您的代码将在Python 2中按预期工作,其中zip创建了一个元组列表.

在Python 3中,zip是一个迭代器.一旦你迭代它,它就会耗尽,所以你的第二个和第三个for循环将没有任何东西可以迭代.

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

wmlist = list(zip(mop,schop))
Run Code Online (Sandbox Code Playgroud)