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.izip()
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.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários