Converti due liste nel dizionario in Python

Rayven Esplanada 14 aprile 2021
  1. Usa zip() e dict() per convertire due liste in un dizionario in Python
  2. Usa la comprensione del dizionario per convertire una lista in dizionario in Python
  3. Usa il cicli for per convertire la lista in dizionario in Python
Converti due liste nel dizionario in Python

Questo tutorial introdurrà come convertire due liste in un dizionario in Python in cui una lista contiene le chiavi del dizionario e l’altro contiene i valori.

Usa zip() e dict() per convertire due liste in un dizionario in Python

Python ha una funzione incorporata chiamata zip(), che aggrega i tipi di dati iterabili in una tupla e la restituisce al chiamante. La funzione dict() crea un dizionario dalla raccolta data.

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

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

In questa soluzione, è possibile convertire liste in dizionari utilizzando una sola riga e due funzioni.

Produzione:

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

Usa la comprensione del dizionario per convertire una lista in dizionario in Python

La comprensione del dizionario è un modo per abbreviare il tempo di inizializzazione della creazione di dizionari in Python. La comprensione è una sostituzione dei cicli for, che richiede più righe e variabili. Comprensione fa il lavoro di inizializzazione in una singola riga.

In questa soluzione, la funzione zip() fornirà ancora valori nella comprensione del dizionario. La comprensione restituirà una coppia chiave-valore di ogni elemento consecutivo all’interno del valore di ritorno della funzione zip() come dizionario.

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)

Un altro modo per convertire le liste in un dizionario è utilizzare gli indici delle liste e usare la funzione range() per iterare su entrambe le liste e usare la comprensione per costruirne un dizionario.

Si presuppone che la lunghezza dell’lista di chiavi e dell’lista di valori sia la stessa. In questo esempio, la lunghezza dell’lista di chiavi sarà la base dell’intervallo.

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)

Entrambe queste soluzioni di comprensione forniranno lo stesso output dell’esempio precedente.

L’unica differenza tra queste due soluzioni è che si usa la funzione zip() per convertire l’lista in una tupla. L’altro usa la funzione range() per iterare entrambe le liste usando l’indice corrente per formare un dizionario.

Produzione:

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

Usa il cicli for per convertire la lista in dizionario in Python

Il modo più semplice per ottenere la conversione da lista a dizionario è eseguirlo in loop. Sebbene questo metodo sia il più inefficiente e lungo, è un buon inizio, soprattutto se sei un principiante e vuoi comprendere di più sulla sintassi di programmazione di base.

Prima del bucle, inizializza un dizionario vuoto. Successivamente, procedi alla conversione, che richiederà un bucle annidato; il bucle esterno itererà l’lista delle chiavi, mentre il bucle interno itererà l’lista dei valori.

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)

Ogni volta che viene formata una coppia chiave-valore, rimuove l’elemento valore dall’lista in modo che alla chiave successiva venga assegnato il valore successivo. Dopo la rimozione, spezza il cappio interno per passare alla chiave successiva.

Un’altra soluzione usando un bucle è usare range() per utilizzare l’indice per ottenere le coppie chiave e valore, proprio come quello che è stato fatto nell’esempio con la comprensione del dizionario.

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)

Entrambe le soluzioni produrranno lo stesso Output:

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

In sintesi, il modo più efficiente per convertire due liste in un dizionario è usare la funzione incorporata zip() per convertire le due liste in una tupla e poi convertire la tupla in un dizionario usando dict().

Usando la comprensione del dizionario puoi anche convertire le liste in un dizionario usando o zip() per convertire le liste in tupla, o range() e usa l’indice delle liste per iterare e inizializzare un dizionario.

Queste due soluzioni sono soluzioni migliori della soluzione ingenua, che utilizza semplici cicli per convertire gli liste in un dizionario.

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

Articolo correlato - Python List

Articolo correlato - Python Dictionary