Las dictionary comprehensions, son una característica poderosa de Python que nos permite crear diccionarios de forma concisa y eficiente utilizando una sintaxis compacta. Son una forma elegante de transformar o filtrar elementos de una secuencia para crear un nuevo diccionario.
La sintaxis básica de una dictionary comprehension es la siguiente:
nuevo_diccionario = {clave_expresion: valor_expresion for elemento in secuencia if condicion}
clave_expresion es una expresión que define cómo se generarán las claves del nuevo diccionario.valor_expresion es una expresión que define cómo se generarán los valores del nuevo diccionario.elemento es una variable que representa cada elemento de la secuencia mientras se recorre.secuencia es la secuencia de origen de la cual se obtendrán los elementos.condicion es una condición opcional que filtra los elementos de la secuencia.Aquí hay un ejemplo para uso de las dictionary comprehensions:
personas = [("Juan", 25), ("María", 30), ("Pedro", 20)] # Crear un nuevo diccionario con el nombre como clave y la edad como valor, solo para personas mayores de 25 años personas_mayores = {nombre: edad for nombre, edad in personas if edad > 25} print(personas_mayores) # Output: {'María': 30} # Crear un nuevo diccionario con el nombre como clave y la longitud del nombre como valor para todas las personas diccionario_longitudes = {nombre: len(nombre) for nombre, _ in personas} print(diccionario_longitudes) # Output: {'Juan': 4, 'María': 5, 'Pedro': 5}
En el primer ejemplo, se crea un nuevo diccionario llamado personas_mayores que contiene solo a las personas mayores de 25 años del diccionario original. Las claves del nuevo diccionario son los nombres y los valores son las edades correspondientes. Esto se logra mediante la expresión nombre: edad en la dictionary comprehension, y se aplica la condición edad > 25.
En el segundo ejemplo, se crea un nuevo diccionario llamado diccionario_longitudes que contiene la longitud de cada nombre del diccionario original. Las claves del nuevo diccionario son los nombres y los valores son las longitudes de los nombres correspondientes. Esto se logra mediante la expresión nombre: len(nombre) en la dictionary comprehension.
Todo esto y más lo puedes aprender en el Curso de Python: Comprehensions, Funciones y Manejo de Errores
Nicolas Alpargatero
EstudianteLucas Frazzetta
EstudianteIan Cristian Ariel Yané
EstudianteJhon Freddy Tavera Blandon
EstudianteJuan Camilo Noreña López
EstudianteBraulio Rangel
EstudianteBraulio Rangel
EstudianteLes comparto una explicación visual que hice:
{nombre: len(nombre) for nombre, _ in personas} el _ hace referencia que ese dato puede ser ignorado, que no se usará en el código, esto no quiere decir que ahorre memoria o el código se ahorre un paso, es solo nomenclatura entre programadores de python.Muy buen aporte, la explicación por sí sola me había resultado confusa. Con la comparación que hiciste vos me quedó bien claro.
Gracias
Gracias Alpargatero!!!
Tenemos una lista de tuplas que contiene información de jugadores de fútbol, donde cada tupla tiene el nombre del jugador y su edad:
jugadores = [ ("Lionel Messi", 34), ("Cristiano Ronaldo", 36), ("Neymar Jr.", 29), ("Kylian Mbappé", 22), ("Kevin De Bruyne", 30) ]
jugadores_edades = {nombre: edad for nombre, edad in jugadores} print(jugadores_edades)
{ 'Lionel Messi': 34, 'Cristiano Ronaldo': 36, 'Neymar Jr.': 29, 'Kylian Mbappé': 22, 'Kevin De Bruyne': 30 }
Otro ejemplo:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] squares_dict = {num: num ** 2 for num in numbers if num % 2 == 0} print(squares_dict) #Output: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
personas = [("Juan", 25), ("María", 30), ("Pedro", 20)] personas_mayores = {nombre: edad for nombre, edad in personas if edad > 25} diccionario_longitudes = {nombre: len(nombre) for nombre, numero in personas} print(personas_mayores) print(diccionario_longitudes)