Tutoriais

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

Ana Maria Gomes 16 jun Intermediário 5xp
Compartilhar

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 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 gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Python para iniciantes: do zero ao primeiro projeto

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Python para dados: do zero à análise completa

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Curso
Grátis · 4h 11min

Python para IA: do zero ao primeiro chatbot

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov