HOWTO · Python
Cómo obtener la primera clave en un diccionario de Python
Aprenda a obtener la primera clave que produce un iterador de diccionario de Python con next(), la conversión a lista, un bucle for y un valor predeterminado seguro para diccionarios vacíos.
En esta página
Para obtener la primera clave que produce un diccionario de Python, llame a next(iter(my_dict)). Esto lee una clave directamente del iterador del diccionario. En este ejemplo, el diccionario contiene un nombre y una ciudad, y el programa imprime la primera clave producida:
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
Qué significa «primera» en un diccionario
Un diccionario no proporciona indexación numérica para las claves. Aquí, «primera» significa la primera clave que se produce cuando Python itera sobre el diccionario. En un diccionario ordenado, la iteración sigue su orden de inserción, por lo que la primera clave es la insertada antes. Si una asignación utiliza un orden de iteración diferente, «primera» sigue el comportamiento de iteración de esa asignación. Esta definición describe el resultado de la iteración; no supone que cada asignación ordene sus claves de la misma manera.
La iteración sobre un diccionario produce claves de forma predeterminada. Por lo tanto, puede pasar el diccionario directamente a iter() o a un bucle for. No es necesario llamar primero a keys(). El método my_dict.keys() devuelve una vista dinámica de las claves cuando necesita inspeccionar o reutilizar esa vista por separado.
Obtener la primera clave con next()
Utilice iter() para crear un iterador sobre el diccionario y, a continuación, next() para recuperar su siguiente elemento. Como un iterador de diccionario produce claves, este enfoque lee una clave sin crear una lista separada de todas las claves. Para un diccionario no vacío, es la opción concisa cuando solo necesita una clave:
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
El valor de first_key es la primera clave producida por la iteración. next() también acepta un valor predeterminado opcional, que resulta útil cuando el diccionario puede no tener claves. La última sección muestra esa forma.
Obtener la primera clave con list()
Si también necesita las claves como una lista, convierta el diccionario en una lista y seleccione el índice 0. Un diccionario pasado a list() produce sus claves, por lo que no es necesario llamar primero a keys():
my_dict = {"name": "Ada", "city": "London"}
first_key = list(my_dict)[0]
print(first_key)
Esta conversión materializa cada clave antes de seleccionar una. Utilice el enfoque del iterador cuando solo necesite una única clave. La conversión a lista es útil cuando la lista resultante también se indexará, se dividirá en porciones o se utilizará en otra operación de lista. El índice 0 requiere que la lista contenga una clave, por lo que esta forma no es adecuada cuando el diccionario puede estar vacío, a menos que lo compruebe antes.
Obtener la primera clave con un bucle for
Un bucle for itera directamente sobre las claves del diccionario. Asigne la primera clave y, a continuación, utilice break para detenerse después de esa iteración:
my_dict = {"name": "Ada", "city": "London"}
for key in my_dict:
first_key = key
break
print(first_key)
Este enfoque se adapta al código que ya utiliza un bucle o que necesita realizar una operación con la clave antes de detenerse. Evita convertir todas las claves en una lista. El bucle no necesita items() cuando el valor no se utiliza. Si el diccionario no contiene claves, el cuerpo del bucle nunca se ejecuta, por lo que el código que utilice first_key después debe tener en cuenta esa posibilidad.
Manejar un diccionario vacío
Llamar a next(iter(my_dict)) cuando el diccionario no tiene claves genera StopIteration. Pase un segundo argumento a next() para devolver un valor alternativo en su lugar:
my_dict = {}
first_key = next(iter(my_dict), None)
print(first_key)
Aquí, None es el valor alternativo. Elija un valor predeterminado que no pueda confundirse con una clave de diccionario válida. Si None puede ser una clave en sus datos, cree un objeto centinela único y utilícelo como valor predeterminado:
my_dict = {"name": "Ada", "city": "London"}
sentinel = object()
first_key = next(iter(my_dict), sentinel)
if first_key is sentinel:
print("No keys")
else:
print(first_key)
El enfoque de lista con list(my_dict)[0] no tiene argumento predeterminado y genera IndexError cuando no hay claves. Utilice next(iter(my_dict), default) cuando un valor alternativo en línea facilite el manejo del comportamiento con entrada vacía.