Código:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Esto imprime ['a', 'c', 'b']
. No estoy seguro de cómo el método keys()
determina el orden de las palabras clave dentro de l . Sin embargo, me gustaría poder recuperar las palabras clave en el orden "adecuado". Por supuesto, el orden correcto crearía la lista ['a', 'b', 'c']
.
python
dictionary
rectángulo
fuente
fuente
Respuestas:
Puede usar OrderedDict (requiere Python 2.7) o superior.
Además, tenga en cuenta que
OrderedDict({'a': 1, 'b':2, 'c':3})
no funcionará ya que eldict
que crea con{...}
ya ha olvidado el orden de los elementos. En su lugar, desea utilizarOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Como se menciona en la documentación, para versiones anteriores a Python 2.7, puede usar esta receta.
fuente
Python 3.7+
En Python 3.7.0, la naturaleza de conservación del orden de inserción de los
dict
objetos ha sido declarada como una parte oficial de la especificación del lenguaje Python. Por lo tanto, puede confiar en ello.Python 3.6 (CPython)
A partir de Python 3.6, para la implementación CPython de Python, los diccionarios mantienen el orden de inserción de forma predeterminada. Sin embargo, esto se considera un detalle de implementación; aún debe usarlo
collections.OrderedDict
si desea un orden de inserción que esté garantizado en otras implementaciones de Python.Python> = 2.7 y <3.6
Utilice la
collections.OrderedDict
clase cuando necesite unadict
que recuerde el orden de los elementos insertados.fuente
Utilice la función ordenada , que ordena el iterable pasado.
El
.keys()
método devuelve las claves en un orden arbitrario.fuente
Solo ordena la lista cuando quieras usarla.
fuente
De http://docs.python.org/tutorial/datastructures.html :
"El método keys () de un objeto de diccionario devuelve una lista de todas las claves usadas en el diccionario, en orden arbitrario (si lo desea ordenar, simplemente aplíquele la función sorted ())".
fuente
Aunque el orden no importa ya que el diccionario es hashmap. Depende del orden en que se inserte:
salida:
para la cadena abbc, las claves son dict_keys (['a', 'b', 'c'])
para la cadena cbab, las claves son dict_keys (['c', 'b', 'a'])
fuente