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.
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
30xp