无法根据需要迭代嵌套的 for 循环 -python - 可能是一个简单的错误
cant iterate nested for loop as wanted -python -maybe a simple mistake
我试过下面的代码:目的是生成一个字典,其中每个键都有一个列表作为值。第一次迭代进行得很顺利,并按照我的意愿生成了项目,但是第二个循环,即嵌套的 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: []}
为什么第二个键和第三个键的列表是空的?
谢谢!
我认为您必须考虑的最好的事情是您安装的 python 版本。
这是我在 python2 中使用您的代码获得的输出:
{1: [1, 3, 5, 6, 2, 4], 2: [1, 3, 5, 6, 2, 4], 3: [1, 6, 2, 3, 4, 5]}
但是 Python3 这是我得到的答案:
{1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}
如果您确定自己的版本正确,只需考虑代码中的缩进即可。祝你好运!!
您的代码在 Python 2 中会像您预期的那样工作,其中 zip
创建一个元组列表。
在Python3中,zip
是迭代器。一旦你迭代它,它就会耗尽,所以你的第二个和第三个 for
循环将没有任何东西可以迭代。
这里最简单的解决方案是从迭代器创建一个列表:
wmlist = list(zip(mop,schop))
我试过下面的代码:目的是生成一个字典,其中每个键都有一个列表作为值。第一次迭代进行得很顺利,并按照我的意愿生成了项目,但是第二个循环,即嵌套的 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: []}
为什么第二个键和第三个键的列表是空的?
谢谢!
我认为您必须考虑的最好的事情是您安装的 python 版本。
这是我在 python2 中使用您的代码获得的输出:
{1: [1, 3, 5, 6, 2, 4], 2: [1, 3, 5, 6, 2, 4], 3: [1, 6, 2, 3, 4, 5]}
但是 Python3 这是我得到的答案:
{1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}
如果您确定自己的版本正确,只需考虑代码中的缩进即可。祝你好运!!
您的代码在 Python 2 中会像您预期的那样工作,其中 zip
创建一个元组列表。
在Python3中,zip
是迭代器。一旦你迭代它,它就会耗尽,所以你的第二个和第三个 for
循环将没有任何东西可以迭代。
这里最简单的解决方案是从迭代器创建一个列表:
wmlist = list(zip(mop,schop))