Converter Duas Listas em Dicionário em Python

Rayven Esplanada 10 outubro 2023
  1. Utilize zip() e dict() para converter duas listas em dicionário em Python
  2. Utilizar a compreensão do dicionário para converter lista em dicionário em Python
  3. Utiliza a função for Loop para converter lista em dicionário em Python
Converter Duas Listas em Dicionário em Python

Este tutorial irá introduzir como converter duas listas num dicionário em Python onde uma lista contém as chaves do dicionário, e a outra contém os valores.

Utilize zip() e dict() para converter duas listas em dicionário em Python

Python tem uma função integrada chamada zip(), que agrega tipos de dados iteráveis num tuple e os devolve à pessoa que faz a chamada. A função dict() cria um dicionário a partir de uma determinada colecção.

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

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

Nesta solução, a conversão de listas em dicionários é possível utilizando apenas uma linha e duas funções.

Resultado:

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

Utilizar a compreensão do dicionário para converter lista em dicionário em Python

A compreensão de dicionários é uma forma de encurtar o tempo de inicialização da criação de dicionários em Python. A compreensão é uma substituição de loops, que requer múltiplas linhas e variáveis. A compreensão faz o trabalho de inicialização numa única linha.

Nesta solução, a função zip() continuará a fornecer valores para a compreensão do dicionário. A compreensão devolverá um par de valores chave de cada elemento consecutivo dentro do valor de retorno da função zip() como um dicionário.

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)

Outra forma de converter listas para um dicionário é utilizando os índices das listas e utilizando a função range() para iterar sobre ambas as listas e utilizar a compreensão para construir um dicionário a partir delas.

Assume que a extensão da lista de chaves e da lista de valores é a mesma. Neste exemplo, o comprimento da lista de chaves será a base para o intervalo.

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 as soluções de compreensão fornecerão a mesma saída que o exemplo anterior.

A única diferença entre estas duas soluções é que se utiliza a função zip() para converter a lista em tuple. A outra utiliza a função range() para iterar ambas as listas utilizando o índice actual para formar um dicionário.

Resultado:

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

Utiliza a função for Loop para converter lista em dicionário em Python

A forma mais simples de conseguir uma lista para conversão em dicionário é através de um laço. Embora este método seja o mais ineficiente e moroso, é um bom começo, especialmente se for um principiante e quiser compreender mais sobre a sintaxe básica da programação.

Antes de fazer um looping, inicialize um dicionário vazio. Depois, proceder à conversão, que exigirá um loop aninhado; o loop externo irá iterar a lista de chaves, enquanto o loop interno irá iterar a 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 forma um par de chaves de valor, este remove o elemento de valor da lista, para que à chave seguinte seja atribuído o valor seguinte. Após a remoção, quebra o laço interno para avançar para a chave seguinte.

Outra solução que utiliza um laço é utilizar range() a utilizar o índice para obter os pares de chaves e de valores, tal como foi feito no exemplo com a compreensão do dicionário.

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 as soluções produzirão o mesmo Resultado:

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

Em resumo, a forma mais eficiente de converter duas listas em dicionário é utilizar a função integrada zip() para converter as duas listas em tuple e depois converter o tuple em dicionário utilizando dict().

A utilização da compreensão do dicionário também pode converter listas em dicionário utilizando zip() para converter as listas em tuple, ou range() e utilizar o índice das listas’ para iterar e inicializar um dicionário.

Estas duas soluções são melhores do que a solução ingénua, que utiliza loops simples para converter as listas em dicionário.

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

Artigo relacionado - Python List

Artigo relacionado - Python Dictionary