Converter Duas Listas em Dicionário em Python

  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

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.

Artigo relacionado - Python List

  • Como reverter uma lista em Python
  • Seleccionar item aleatoriamente de uma lista em Python
  • Artigo relacionado - Python Dictionary

  • Contar valores únicos na lista Python
  • Como excluir um arquivo e diretório em Python