Python:为什么这不起作用? (迭代非序列)

时间:2011-12-05 21:11:48

标签: python dictionary iteration sequence

我有一个字典,每个键都包含一个列表作为值。而且我正在尝试查看列表中的所有项目,让我们说我正在尝试打印所有项目,我写道:

for item in aDict: 
    for item2 in aDict[item]: 
        print item2

这会打印出列表中第一个值的项目,然后它会给出一个错误,说“迭代非序列”。为什么这样,我该怎么做?

提前致谢。

4 个答案:

答案 0 :(得分:7)

您的一个字典值不是列表!

答案 1 :(得分:5)

我假设aDict中的其中一项不是sequence,字符串,列表,元组等:

>>> aDict = { 'a' : [1, 2, 3,], 'b' : [4, 5, 6,], 'c' : [7, 8, 9,] }
>>> for item in aDict:
...     for item2 in aDict[item]:
...         print item2
...
1
2
3
7
8
9
4
5
6
>>>

答案 2 :(得分:0)

执行此操作时:

for item in aDict: 
    for item2 in aDict[item]: 
        print item2

你的说法,对于字典中的每个item,循环遍历字典中的item索引,这没有任何意义。

您真正想要做的是为每个item循环播放该特定项目,例如:

for item in aDict: 
    for item2 in item: 
        print item2

或使用更好的术语:

for dictIndex in aDict: 
        for item in dictIndex: 
            print item

答案 3 :(得分:0)

aDict[item]意味着您需要dict的值,而不是键?在这种情况下,.itervalues().iteritems()应该比默认迭代更自然(仅限于键)。

for key, value in aDict.iteritems():
    for subvalue in value:
        pass

错误指向(至少有一个)您的值不可迭代。