Si un mydict
no está vacío, accedo a un elemento arbitrario como:
mydict[mydict.keys()[0]]
¿Hay alguna forma mejor de hacer esto?
En Python 3, de forma no destructiva e iterativa:
next(iter(mydict.values()))
En Python 2, de forma no destructiva e iterativa:
mydict.itervalues().next()
Si quieres que funcione tanto en Python 2 como en 3, puedes utilizar el paquete six
:
six.next(six.itervalues(mydict))
aunque en este punto es bastante críptico y prefiero tu código.
Si quieres eliminar algún elemento, hazlo:
key, value = mydict.popitem()
Tenga en cuenta que "primero" no es un término apropiado aquí. Se trata de "cualquier" elemento, porque dict
no es un tipo ordenado.
Como otros mencionaron, no hay un "primer elemento", ya que los diccionarios no tienen un orden garantizado (están implementados como tablas hash). Si quieres, por ejemplo, el valor correspondiente a la clave más pequeña, thedict[min(thedict)]
lo hará. Si te importa el orden en el que se insertaron las claves, es decir, por "primero" quieres decir "lo primero que se insertó", entonces en Python 3.1 puedes usar collections.OrderedDict, que también está en el próximo Python 2.7; para versiones anteriores de Python, descarga, instala y usa el backport de ordered dict (2.4 y posteriores) que puedes encontrar aquí.
Python 3.7 Los dicts ahora están ordenados por inserción.
Ignorando las cuestiones relativas a la ordenación del dictado, esto podría ser mejor:
next(dict.itervalues())
De esta manera evitamos la búsqueda de elementos y la generación de una lista de claves que no utilizamos.
next(iter(dict.values()))