Python:通过字典迭代给我“int object not iterable”

时间:2011-04-21 22:58:13

标签: python dictionary loops

这是我的功能:

def printSubnetCountList(countList):
    print type(countList)
    for k, v in countList:
        if value:
            print "Subnet %d: %d" % key, value

这是在传递字典的情况下调用函数时的输出:

<type 'dict'>
Traceback (most recent call last):
  File "compareScans.py", line 81, in <module>
    printSubnetCountList(subnetCountOld)
  File "compareScans.py", line 70, in printSubnetCountList
    for k, v in countList:
TypeError: 'int' object is not iterable

有什么想法吗?

3 个答案:

答案 0 :(得分:47)

试试这个

for k in countList:
    v= countList[k]

或者这个

for k, v in countList.items():

请阅读此内容:http://docs.python.org/library/stdtypes.html#mapping-types-dict

答案 1 :(得分:15)

for k, v语法是元组解包符号的简短形式,可以写成for (k, v)。这意味着迭代集合的每个元素都应该是一个由两个元素组成的序列。但是对字典的迭代只产生键,而不是值。

解决方案是使用dict.items()dict.iteritems()(惰性变体),它返回键值元组的序列。

答案 2 :(得分:1)

你不能像这样迭代一个字典。见例:

def printSubnetCountList(countList):
    print type(countList)
    for k in countList:
        if countList[k]:
            print "Subnet %d: %d" % k, countList[k]