Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
Dicionário em Python
Este guia abrangente explica dicionários Python — como criá-los, acessar, adicionar, deletar elementos e aproveitar métodos built-in.
Vídeo: Dicionários Python para Armazenar Pares Chave/Valor
Dicionários Python são coleções não ordenadas de pares chave/valor. Cada entrada associa uma chave única e imutável a um valor que pode ser de qualquer tipo.
Criando um Dicionário Python
Definir um dicionário é direto: coloque pares chave/valor separados por vírgula dentro de chaves {}. Chaves devem ser imutáveis (strings, números, ou tuplas de elementos imutáveis) e únicas; valores podem ser qualquer tipo de dado e podem se repetir.
# dicionário vazio
my_dict = {}
# dicionário com chaves inteiras
my_dict = {1: 'apple', 2: 'ball'}
# dicionário com chaves mistas
my_dict = {'name': 'John', 1: [2, 4, 3]}
# usando dict()
my_dict = dict({1:'apple', 2:'ball'})
# a partir de sequência de pares
my_dict = dict([(1,'apple'), (2,'ball')])
Todas as abordagens acima criam a mesma estrutura de dicionário.
Acessando Elementos de um Dicionário
Valores de dicionário são recuperados via suas chaves, seja com colchetes [] ou método get(). Usar colchetes levanta KeyError se chave ausente; get() retorna None por padrão.
# get vs [] para recuperar elementos
my_dict = {'name': 'Jack', 'age': 26}
# Saída: Jack
print(my_dict['name'])
# Saída: 26
print(my_dict.get('age'))
# Tentando acessar chave ausente retorna None
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])
Saída
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'
Alterando e Adicionando Elementos do Dicionário
Dicionários são mutáveis. Atribuir a chave existente atualiza seu valor; atribuir a nova chave adiciona nova entrada.
# Alterando e adicionando elementos do dicionário
my_dict = {'name': 'Jack', 'age': 26}
# atualizar valor
my_dict['age'] = 27
# Saída: {'age': 27, 'name': 'Jack'}
print(my_dict)
# adicionar item
my_dict['address'] = 'Downtown'
# Saída: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)
Saída
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}
Removendo Elementos de um Dicionário
Use pop() para deletar chave específica e recuperar seu valor. popitem() remove par arbitrário, enquanto clear() limpa o dicionário inteiro. A palavra-chave del pode remover entradas individuais ou a variável inteira.
# Removendo elementos de um dicionário
# criar dicionário
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# remover item específico, retorna seu valor
# Saída: 16
print(squares.pop(4))
# Saída: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# remover item arbitrário, retorna (chave,valor)
# Saída: (5, 25)
print(squares.popitem())
# Saída: {1: 1, 2: 4, 3: 9}
print(squares)
# remover todos itens
squares.clear()
# Saída: {}
print(squares)
# deletar o dicionário em si
del squares
# Lança erro
print(squares)
Saída
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined
Métodos de Dicionário Python
A tabela abaixo lista métodos comuns de dicionário e seus propósitos. Muitos são demonstrados nos exemplos a seguir.
| Método | Descrição |
|---|---|
| clear() | Remove todos itens do dicionário. |
| copy() | Retorna cópia rasa do dicionário. |
| fromkeys(seq[, v]) | Cria novo dicionário de seq com toda chave definida como v (padrão None). |
| get(key[,d]) | Retorna valor para key; se ausente, retorna d (padrão None). |
| items() | Retorna view dos pares (chave, valor) do dicionário. |
| keys() | Retorna view das chaves do dicionário. |
| pop(key[,d]) | Deleta key e retorna seu valor ou d; levanta KeyError se key ausente e d não fornecido. |
| popitem() | Remove e retorna par (chave, valor) arbitrário; levanta KeyError se dicionário vazio. |
| setdefault(key[,d]) | Retorna valor para key; se ausente, insere key com valor d (padrão None) e retorna d. |
| update([other]) | Insere ou atualiza pares chave/valor de other, sobrescrevendo chaves existentes. |
| values() | Retorna view dos valores do dicionário. |
Exemplo de uso:
# Métodos de Dicionário
marks = {}.fromkeys(['Math', 'English', 'Science'], 0)
# Saída: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)
for item in marks.items():
print(item)
# Saída: ['English', 'Math', 'Science']
print(list(sorted(marks.keys())))
Saída
{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']
Compreensão de Dicionário (Dictionary Comprehension)
Compreensão de dicionário oferece sintaxe concisa para construir dicionários a partir de iteráveis. Segue o padrão {chave: valor for elemento in iterável}.
# Compreensão de Dicionário
squares = {x: x*x for x in range(6)}
print(squares)
Saída
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Versão imperativa equivalente:
squares = {}
for x in range(6):
squares[x] = x*x
print(squares)
Saída
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Compreensões podem incluir múltiplos loops e filtros if. Exemplo: apenas quadrados ímpares.
# Compreensão de Dicionário com condicional if
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)
Saída
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Para mais sobre compreensões de dicionário, veja Python Dictionary Comprehension.
Outras Operações com Dicionário
Teste de Pertinência em Dicionário
Use operador in para verificar se chave existe; ele não inspeciona valores.
# Teste de Pertinência para Chaves de Dicionário
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Saída: True
print(1 in squares)
# Saída: True
print(2 not in squares)
# teste de pertinência apenas para chave, não valor
# Saída: False
print(49 in squares)
Saída
True True False
Iterando Sobre um Dicionário
Itere sobre chaves diretamente, então acesse valores.
# Iterando sobre Dicionário
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
Saída
1 9 25 49 81
Funções Built-in de Dicionário
Funções padrão como all(), any(), len() e sorted() são frequentemente aplicadas a dicionários.
| Função | Descrição |
|---|---|
| all() | True se toda chave avalia True (ou se dicionário vazio). |
| any() | True se qualquer chave avalia True; False para dicionário vazio. |
| len() | Número de pares chave/valor. |
| cmp() | Compara dois dicionários (removido no Python 3). |
| sorted() | Retorna lista ordenada de chaves. |
Exemplos:
# Funções Built-in de Dicionário
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Saída: False
print(all(squares))
# Saída: True
print(any(squares))
# Saída: 6
print(len(squares))
# Saída: [0, 1, 3, 5, 7, 9]
print(sorted(squares))
Saída
False True 6 [0, 1, 3, 5, 7, 9]
python
- Dominando Tipos de Dados em Python: Guia Prático
- Dominando Operadores em Python: Guia Completo
- Dominando a Declaração Pass em Python: Guia Prático
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários
- Visão Geral do Python: Linguagem de Alto Nível, Legível, Interativa e Orientada a Objetos
- Números em Python: Entender Tipos de Dados Numéricos Imutáveis
- Dominando Strings em Python: Criação, Acesso e Manipulação