Convertir dos listas en diccionario en Python

Rayven Esplanada 30 enero 2023
  1. Usar zip() y dict() para convertir dos listas en un diccionario en Python
  2. Utilizar la comprensión de diccionarios para convertir listas en diccionarios en Python
  3. Utilizar el bucle for para convertir una lista en un diccionario en Python
Convertir dos listas en diccionario en Python

Este tutorial presentará cómo convertir dos listas en un diccionario en Python en el que una lista contiene las claves del diccionario, y la otra contiene los valores.

Usar zip() y dict() para convertir dos listas en un diccionario en Python

Python tiene una función incorporada llamada zip(), que agrega tipos de datos iterables en una tupla y la devuelve a quien la llama. La función dict() crea un diccionario a partir de la colección dada.

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = dict(zip(key_list, value_list))
print(dict_from_list)

En esta solución, la conversión de listas en diccionarios es posible utilizando una sola línea y dos funciones.

Producción :

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

Utilizar la comprensión de diccionarios para convertir listas en diccionarios en Python

La comprensión de diccionarios es una forma de acortar el tiempo de inicialización de la creación de diccionarios en Python. La comprensión es un reemplazo de los bucles for, que requieren múltiples líneas y variables. La comprensión hace el trabajo de inicialización en una sola línea.

En esta solución, la función zip() seguirá proporcionando valores a la comprensión del diccionario. La comprensión devolverá un par clave-valor de cada elemento consecutivo dentro del valor de retorno de la función zip() como un diccionario.

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {k: v for k, v in zip(key_list, value_list)}
print(dict_from_list)

Otra forma de convertir las listas en un diccionario es utilizar los índices de las listas y usar la función range() para iterar sobre ambas listas y usar la comprensión para construir un diccionario a partir de ellas.

Se asume que la longitud de la lista de claves y la lista de valores es la misma. En este ejemplo, la longitud de la lista de claves será la base del rango.

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {key_list[i]: value_list[i] for i in range(len(key_list))}
print(dict_from_list)

Ambas soluciones de comprensión proporcionarán la misma salida que el ejemplo anterior.

La única diferencia entre estas dos soluciones es que una utiliza la función zip() para convertir la lista en una tupla. La otra utiliza la función range() para iterar ambas listas utilizando el índice actual para formar un diccionario.

Producción :

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

Utilizar el bucle for para convertir una lista en un diccionario en Python

La forma más directa de lograr la conversión de lista a diccionario es mediante un bucle. Aunque este método es el más ineficiente y largo, es un buen comienzo, especialmente si eres un principiante y quieres comprender mejor la sintaxis básica de programación.

Antes de hacer el bucle, inicialice un diccionario vacío. Después, proceda a la conversión, que requerirá un bucle anidado; el bucle exterior iterará la lista de claves, mientras que el bucle interior itera la lista de valores.

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {}
for key in key_list:
    for value in value_list:
        dict_from_list[key] = value
        value_list.remove(value)
        break

print(dict_from_list)

Cada vez que se forme un par clave-valor, elimina el elemento valor de la lista para que a la siguiente clave se le asigne el siguiente valor. Tras la eliminación, rompe el bucle interno para pasar a la siguiente clave.

Otra solución utilizando un bucle es utilizar range() para utilizar el índice para obtener los pares clave y valor, al igual que lo que se hizo en el ejemplo con la comprensión del diccionario.

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {}
for i in range(len(key_list)):
    dict_from_list[key_list[i]] = value_list[i]

print(dict_from_list)

Ambas soluciones producirán la misma salida:

{"name": "Johnny", "age": "27", "address": "New York"}

En resumen, la forma más eficiente de convertir dos listas en un diccionario es utilizar la función incorporada zip() para convertir las dos listas en una tupla y luego convertir la tupla en un diccionario utilizando dict().

Usando la comprensión del diccionario también se pueden convertir las listas en un diccionario usando zip() para convertir las listas en tuplas, o range() y usar el índice de las listas para iterar e inicializar un diccionario.

Estas dos soluciones son mejores que la solución ingenua, que utiliza bucles simples para convertir las listas en un diccionario.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python List

Artículo relacionado - Python Dictionary