Dicionários

Dicionários são estruturas de dados que armazenam pares de chave e valor, permitindo associar informações de forma organizada. Diferentemente das listas, que utilizam índices numéricos, os dicionários utilizam chaves que podem ser strings, números ou até mesmo tuplas imutáveis. A sintaxe básica envolve o uso de chaves {}, separando cada chave e valor por dois pontos :.

Por exemplo:

pessoa = {
    "nome": "Ana",
    "idade": 25,
    "cidade": "São Paulo"
}

Nesse caso, "nome", "idade" e "cidade" são as chaves, e cada uma delas está associada a um valor. O acesso é feito informando a chave entre colchetes:

print(pessoa["nome"])   # Ana
print(pessoa["idade"])  # 25

É possível adicionar ou alterar valores diretamente. Se quisermos atualizar a idade ou inserir uma nova chave chamada "profissão", basta fazer:

pessoa["idade"] = 26
pessoa["profissão"] = "Engenheira"

print(pessoa)
# {'nome': 'Ana', 'idade': 26, 'cidade': 'São Paulo', 'profissão': 'Engenheira'}

A remoção pode ser feita com pop ou com a instrução del:

pessoa.pop("cidade")
del pessoa["profissão"]

print(pessoa)  
# {'nome': 'Ana', 'idade': 26}

Também é comum percorrer um dicionário para acessar suas chaves, valores ou ambos:

for chave, valor in pessoa.items():
    print(chave, "->", valor)

Esse laço imprime todas as informações do dicionário de maneira estruturada.

Dicionários em Listas

Uma situação muito prática ocorre quando precisamos armazenar múltiplos registros semelhantes. Nesse caso, podemos usar dicionários dentro de uma lista, cada um representando uma entidade.

Por exemplo, imagine uma lista de pessoas:

pessoas = [
    {"nome": "Ana", "idade": 25},
    {"nome": "Bruno", "idade": 30},
    {"nome": "Carla", "idade": 22}
]

O acesso é feito primeiro pelo índice da lista e depois pela chave do dicionário:

print(pessoas[0]["nome"])  # Ana
print(pessoas[1]["idade"]) # 30

Também podemos percorrer toda a lista e acessar os dicionários dentro dela:

for pessoa in pessoas:
    print(f"{pessoa['nome']} tem {pessoa['idade']} anos")

Esse tipo de estrutura é bastante usado para representar coleções de objetos, simulando um pequeno banco de dados em memória.