Tamanho de fonte
Alto contraste
Altura de linha

Criar Dicionário a partir de Listas Separadas de Chaves e Valores

Avatar de Ana Maria Gomes Ana Maria Gomes
3 minutos de leitura 5 meses atrás

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}
Testar

A 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)
Testar

Essa 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.

Imagem de um notebook

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
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov