2011-04-21 12 views
29

Aquí es mi función:Python: iteración a través de un diccionario me da "objeto int no Iterable"

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

Aquí está la salida cuando la función es llamada con el diccionario que se le pasa:

<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 

¿Algunas ideas?

Respuesta

0

No se puede repetir un diccionario como este. Ver ejemplo:

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

La sintaxis for k, v es una forma corta de la notación de desembalaje tupla, y podría ser escrito como for (k, v). Esto significa que se espera que cada elemento de la colección iterada sea una secuencia que consta exactamente de dos elementos. Pero la iteración en los diccionarios produce solo claves, no valores.

La solución es usar dict.items() o dict.iteritems() (variante diferida), que devuelve la secuencia de tuplas de valores-clave.

Cuestiones relacionadas