Estoy intentando que mi programa se imprima "banana"
desde el diccionario. ¿Cuál sería la forma más sencilla de hacer esto?
Este es mi diccionario:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
Slagoy
fuente
fuente
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Qué quiere decirfor k in prices: print k
? Eso imprimirá todas las claves en el diccionario.Respuestas:
En una versión de Python donde se ordenan los dictados, puede hacer
Para que se ordenen los dictados, necesita Python 3.7+ o 3.6+ si está de acuerdo con confiar en la naturaleza ordenada técnicamente de detalles de implementación de los dictos en Python 3.6.
Para versiones anteriores de Python, no hay una "primera clave".
fuente
next(iter( my_dict.items() ))
Un diccionario no está indexado, pero de alguna manera está ordenado. Lo siguiente le daría la primera clave existente:
fuente
list(my_dict)[0]
ya que recuperará la lista de claves de todos modos?Actualización: a partir de Python 3.7, se mantiene el orden de inserción, por lo que no necesita un
OrderedDict
aquí. Puede usar los siguientes enfoques con una normalidaddict
fuente
Python 3.6 y anterior *
Si está hablando de un habitual
dict
, entonces la "primera clave" no significa nada. Las claves no están ordenadas de ninguna manera en la que pueda confiar. Si iteras sobre tudict
probablemente no obtendrás"banana"
lo primero que ves.Si necesita mantener las cosas en orden, debe usar un
OrderedDict
y no solo un diccionario simple.Si desea ver todas las claves en orden , puede hacerlo iterando a través de él
Podría, alternativamente, poner todas las claves en una lista y luego trabajar con eso
Una forma más rápida de obtener el primer elemento sin crear una lista sería llamar
next
al iterador. Sin embargo, esto no se generaliza bien cuando se intenta obtener elnth
elemento* CPython había garantizado el orden de inserción como detalle de implementación en 3.6.
fuente
Para Python 3 a continuación se elimina la sobrecarga de la conversión de la lista:
fuente
El
dict
tipo es un desordenado mapeo , por lo que no existe un elemento "primero".Lo que quieres es probablemente
collections.OrderedDict
.fuente
Así que encontré esta página mientras intentaba optimizar algo para tomar la única clave en un diccionario de longitud conocida 1 y devolver solo la clave. El siguiente proceso fue el más rápido para todos los diccionarios que probé hasta el tamaño 700.
Probé 7 enfoques diferentes, y descubrí que este era el mejor, en mi Macbook 2014 con Python 3.6:
Los resultados de su perfil fueron:
Todos los enfoques que probé están aquí:
fuente
Bueno, así de simple, la respuesta según mí será
first = list(prices)[0]
la conversión del diccionario a la lista generará las claves y seleccionaremos la primera clave de la lista.
fuente
next(iter(prices))
, como ya lo sugieren otras respuestas.Como muchos otros han señalado, no hay un primer valor en un diccionario. La clasificación en ellos es arbitraria y no puede contar con que la clasificación sea la misma cada vez que acceda al diccionario. Sin embargo, si desea imprimir las claves, hay un par de formas:
Este método utiliza la asignación de tuplas para acceder a la clave y al valor. Esto es útil si necesita acceder a la clave y al valor por algún motivo.
Esto solo dará acceso a las claves como lo
keys()
implica el método.fuente
d.keys () [0] para obtener la clave individual.
Actualización: - @AlejoBernardin, no estoy seguro de por qué dijiste que no funcionó. Aquí lo comprobé y funcionó. importar colecciones
fuente
dict.keys()
devuelve un en'dict_keys' object
lugar de alist
, que no admite la indexación.Use un bucle for que abarque todas las claves en
prices
:Asegúrese de cambiar
prices.items()
aprices.iteritems()
si está usando Python 2.xfuente
Si solo desea la primera clave de un diccionario, debe usar lo que muchos han sugerido antes
Sin embargo, si desea el primero y mantener el resto como una lista, puede usar el operador de desempaquetado de valores
Lo mismo se aplica a los valores reemplazando
prices
conprices.values()
y para la clave y el valor, incluso puede usar la asignación de desempaquetadofuente
La forma más fácil es:
pero algunas veces debes ser más cuidadoso y asegurarte de que tu entidad sea una lista valiosa, así que:
fuente
TypeError: 'dict_keys' object is not subscriptable
, al menos con Python 3.8