Parece que las listas devueltas por keys()
y values()
métodos de un diccionario son siempre una asignación de 1 a 1 (suponiendo que el diccionario no se altera entre llamar a los 2 métodos).Diccionario de Python: ¿las claves() y los valores() siempre tienen el mismo orden?
Por ejemplo:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
Si no alteran el diccionario keys()
entre llamar y llamar a values()
, es erróneo suponer lo anterior para bucle siempre imprimir Es cierto? No pude encontrar ninguna documentación que confirmara esto.
Nota al margen: para generar una lista de los valores, tendría que pasar por la lista de claves, de todos modos. ;) –
Todas las respuestas indican claramente que la respuesta es "sí, siempre el mismo orden", pero ¿qué orden es eso? Obviamente, el orden de la función hash, pero ¿es eso predecible? – naught101
@ naught101 el orden de la función hash es [no destinado a depender de] (https://docs.python.org/3/tutorial/datastructures.html#dictionaries). Si se desea un orden, [OrderedDict] (https://docs.python.org/3.6/library/collections.html#collections.OrderedDict) sería el camino a seguir. – Marc