Python TypeError:“ bool”对象不可迭代

时间:2018-07-17 02:47:32

标签: python arrays dictionary data-structures while-loop

我正在运行此代码,以尝试使用dict分配键值对。存储在两个单独的数组中的数据(键= xvalue,yvalue)。即

class Song
{
    public string Name { get; private set; }
    public LinkedList<Note> notes { get; private set; }
    public Song(string name)
    {
        this.Name = name;
        this.notes = new LinkedList<Note>();
    }
}

但是当我运行它时,出现TypeError:

1  def main():
2  path = 'some/path/'
3
4
5   d = {}
6   xcord = [1.2,2.4,2.9,3.0,4.1]
7   ycord = [1.0,2.0,3.0,4.0,5.0]
8   a=0
9   b=0
10  while b < 136 and a <= 21 :
11      for x in xcord and y in ycord :
12  -->    d{b}.append(xcord[x],ycord[y])
13         b=b+1
14         if a == 21:
15          a=0
16         else:
17          a=a+1
18  print(d)
19
20  if __name__ == "__main__":
21     main()

我正在寻找将xcord和ycord数组中的数据追加到字典中的方法,显然我没有正确执行此操作。
我当时想我可以参考dict来进行类似这样的未来计算:

File "some/path/", line 21, in <module>
    main()
  File "some/path", line 12, in main
    for x in xcord and y in ycord :
TypeError: 'bool' object is not iterable

请以Python的方式批评我,我是Python的新手。和任何帮助表示赞赏。我知道数学部分不正确,因为我只是显示了一些语法来解释

2 个答案:

答案 0 :(得分:2)

替换:

for x in xcord and y in ycord :

使用:

for x,y in zip(xcord,ycord):

还有更多的错误,因此您的代码应如下所示:

def main():
    path = 'some/path/'
    d = {}
    xcord = [1.2,2.4,2.9,3.0,4.1]
    ycord = [1.0,2.0,3.0,4.0,5.0]
    a=0
    b=0
    while b < 136 and a <= 21 :
        for x,y in zip(xcord,ycord):
           if b in d:
              d[b].append(x,y)
           else:
              d[b]=[x,y]
           b=b+1
           if a == 21:
              a=0
           else:
              a=a+1
    print(d)

if __name__ == "__main__":
   main()

答案 1 :(得分:0)

感谢大家在我早期的python编码时代的支持。
我发现可以与我期望的输出完全兼容的解决方案是:

d = {}
b = 0
xcord = [1.2,2.4,2.9,3.0,4.1]
ycord = [1.0,2.0,3.0,4.0,5.0]

    for x,y in zip(xcord,ycord):
        if b in d:
            d[b].append(x,y)
        else:
            d[b] = [x,y]
        b=b+1