¿Hay alguna diferencia aplicable entre dict.items()
y dict.iteritems()
?
De los documentos de Python :
dict.items()
: Devuelve una copia de la lista de pares (clave, valor) del diccionario.
dict.iteritems()
: Devuelve un iterador sobre los pares del diccionario (clave, valor).
Si ejecuto el código a continuación, cada uno parece devolver una referencia al mismo objeto. ¿Hay alguna diferencia sutil que me falta?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
Salida:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same object
they are the same object
they are the same object
d[k] is v
siempre devolvería True porque python mantiene una matriz de objetos enteros para todos los enteros entre -5 y 256: docs.python.org/2/c-api/int.html Cuando crea un int en ese rango, en realidad solo >> a = 2; b = 2 >> a is b True
>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
a iter()
en Python 3? El enlace de documentación anterior no parece coincidir con esta respuesta.
items()
crea todos los elementos a la vez y devuelve una lista.iteritems()
devuelve un generador: un generador es un objeto que "crea" un elemento a la vez cada vez quenext()
se lo llama.