Criar um dicionário a partir de duas listas separadas — uma contendo chaves e a outra contendo valores — é uma tarefa comum na programação Python. Se você já se deparou com duas listas como estas:
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']E você quer combiná-las em um único dicionário assim:
{'name': 'Monty', 'age': 42, 'food': 'spam'}Aqui está como você pode fazer isso de forma eficiente.
Usando dict() e zip()
A maneira mais direta e eficiente de mesclar duas listas em um dicionário é usando o construtor dict() junto com a função zip(). Aqui está um exemplo simples:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print(dictionary) # Saída: {'a': 1, 'b': 2, 'c': 3}TestarA função zip() emparelha os elementos das listas keys e values, e o construtor dict() então transforma esses pares em entradas do dicionário.
Compreensão de Dicionário como Alternativa
Outro método é usar a compreensão de dicionário, que é uma forma concisa de criar dicionários. Isso é particularmente útil quando você precisa aplicar alguma condição ou operação nas chaves ou valores:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
new_dict = {k: v for k, v in zip(keys, values)}
print(new_dict)TestarEssa abordagem é quase tão rápida quanto usar dict() com zip() e é a melhor escolha quando você precisa de mais controle sobre o processo de criação do dicionário.
Considerações de Desempenho
No Python 3, zip() retorna um iterador preguiçoso, o que o torna muito eficiente porque não gera estruturas de dados intermediárias desnecessárias. É por isso que dict(zip(keys, values)) é a abordagem mais eficiente.
Para usuários do Python 2, zip() retorna uma lista, o que não é tão eficiente em termos de memória. Para evitar isso, você pode usar itertools no Python 2, que se comporta como o zip() do Python 3:
import itertools
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
adict = dict(itertools.izip(keys, values))Resumo
Para combinar duas listas em um dicionário, use o construtor dict() com a função zip(). Este método é conciso e eficiente, tornando-o a melhor escolha para a maioria das situações. Para casos em que você precisa manipular chaves ou valores durante a criação do dicionário, considere usar uma compreensão de dicionário. Lembre-se de que no Python 2, itertools.izip() é uma alternativa mais eficiente em termos de memória ao zip(). Com essas ferramentas, você pode facilmente mesclar listas em dicionários no seu código Python.
Comente e participe da conversa
Crie sua conta gratuita e compartilhe sua opinião nos comentários.
Entre para a Asimov