python3 - python iterate dictionary values
Python: iterar a través de un diccionario me da "int object no iterable" (3)
La sintaxis for k, v
es una forma abreviada de la notación de desempaquetado de tuplas, y podría escribirse 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 clave-valor.
Aquí está mi función:
def printSubnetCountList(countList):
print type(countList)
for k, v in countList:
if value:
print "Subnet %d: %d" % key, value
Aquí está el resultado cuando se llama a la función con el diccionario que se le pasó:
<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?
No puede iterar un dict como este. Ver ejemplo:
def printSubnetCountList(countList):
print type(countList)
for k in countList:
if countList[k]:
print "Subnet %d: %d" % k, countList[k]
Prueba esto
for k in countList:
v= countList[k]
O esto
for k, v in countList.items():
Lea esto, por favor: http://docs.python.org/library/stdtypes.html#mapping-types-dict