Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Comprensiones de Diccionarios | Comprensiones de Listas y Diccionarios
Tutorial de Bucles en Python
Sección 4. Capítulo 3
single

single

Comprensiones de Diccionarios

Desliza para mostrar el menú

Las comprensiones de diccionarios ofrecen una forma concisa de crear diccionarios en Python, similar a las comprensiones de listas. Permiten transformar datos en pares clave-valor en una sola línea de código.

En esencia, una comprensión básica de diccionario permite construir un nuevo diccionario aplicando una expresión a cada par clave-valor en una variable iterable.

{key_expression: value_expression for item in iterable}
  • key_expression: define la clave para cada par clave-valor;
  • value_expression: define el valor correspondiente a la clave;
  • iterable: fuente de los elementos a procesar (por ejemplo, una lista, un rango u otro iterable).
Note
Nota

A diferencia de las listas, los diccionarios requieren tanto una clave como un valor, separados por dos puntos (:) y utilizan {} en lugar de [].

12345678910111213141516
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Initialize an empty dictionary travel_budget = {} # Populate the dictionary using a for loop for destination, cost in travel_wishlist: travel_budget[destination] = cost print(travel_budget)

Este código recorre la lista travel_wishlist, donde cada sublista contiene un destino y su presupuesto. El bucle for asigna el destino como clave y el presupuesto como valor en el diccionario travel_budget.

123456789101112
travel_wishlist = [ ['Paris', 2000], ['Tokyo', 3000], ['New York', 2500], ['Kyoto', 1500], ['Sydney', 4000] ] # Create the dictionary using dictionary comprehension travel_budget = {destination: cost for destination, cost in travel_wishlist} print(travel_budget)

Este ejemplo utiliza la comprensión de diccionarios para lograr el mismo resultado que el ejemplo anterior. Cada destino se convierte en una clave y su costo correspondiente se convierte en el valor en el diccionario travel_budget, todo en una sola línea.

Manejo de ValueError al desempaquetar elementos con más de dos valores

Al utilizar comprensiones de diccionarios, a menudo se desempaquetan elementos de un iterable en variables para claves y valores. Si cada elemento en tu iterable contiene más de dos elementos (como una lista de [city, country, budget]), intentar desempaquetar en solo dos variables provocará un ValueError.

Por ejemplo, si escribes:

{city: country for city, country in travel_wishlist}

y travel_wishlist contiene sublistas con tres elementos, Python mostrará este error:

ValueError: too many values to unpack (expected 2)

¿Por qué ocurre esto?

  • Python espera desempaquetar exactamente dos valores (para city y country), pero cada sublista tiene tres.
  • Esta discrepancia hace que Python lance un ValueError, indicando claramente que se están proporcionando más valores de los esperados.

¿Cómo puedes manejar esto?

  • Desempaquetar todos los elementos, pero usar solo los necesarios:

for city, country, budget in travel_wishlist — asignar cada valor a una variable.

  • Ignorar valores no utilizados con un guion bajo:

for city, country, _ in travel_wishlist — el guion bajo _ es una convención común para variables no utilizadas.

  • Usar slicing para seleccionar elementos:

for city, country in [item[:2] for item in travel_wishlist] — recortar cada sublista a los dos primeros elementos antes de desempaquetar.

Al hacer coincidir el número de variables con el número de elementos en cada elemento, o al ignorar los datos no utilizados, se evitan errores de desempaquetado y se mantienen las comprensiones de diccionarios limpias y legibles.

1234567891011121314151617181920
# Example data: each tuple has three elements (city, country, budget) travel_wishlist = [ ("Paris", "France", 2000), ("Tokyo", "Japan", 3000), ("New York", "USA", 2500) ] # Attempting to unpack only two variables (incorrect) try: city_to_country = {city: country for city, country in travel_wishlist} except ValueError as e: print("Error:", e) # Correct: unpack all elements, using underscore for unused value city_to_country = {city: country for city, country, _ in travel_wishlist} print("Handled with underscore:", city_to_country) # Correct: use slicing to select only needed elements city_to_country = {item[0]: item[1] for item in travel_wishlist} print("Handled with slicing:", city_to_country)
Tarea

Desliza para comenzar a programar

Un viajero desea organizar su travel_wishlist asociando cada nombre de ciudad con su país correspondiente. Para lograrlo de manera eficiente, es necesario transformar los datos en un diccionario.

  • Extraer los nombres de las ciudades y sus países correspondientes de travel_wishlist.
  • Almacenar el diccionario resultante en city_to_country.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt