DICIONÁRIOS EM PYTHON

 

Dicionários em Python

Dicionários são estruturas de dados que permitem armazenar informações relacionadas de forma organizada. Eles são compostos por pares de chave e valor, onde cada chave é única e está associada a um valor. Essa estrutura permite armazenar diversos tipos de dados, incluindo strings, listas, números, e até outros dicionários.

Estrutura do dicionário

A sintaxe de um dicionário em Python é representada por chaves {}. Dentro dessas chaves, as chaves e os valores são separados por dois pontos :. Os pares chave-valor são separados por vírgulas. Exemplo:

dicionario = {'nome': 'Natanael', 'idade': 27, 'cidade': 'Guarulhos'}

Acessando valores no dicionário

Para acessar os valores armazenados no dicionário, você deve especificar o nome do dicionário e colocar a chave entre colchetes []. Exemplo:

print(dicionario['nome'])
# Saída: Natanael

Exemplo completo:

dicionario = {'nome': 'Natanael', 'idade': 27, 'cidade': 'Guarulhos'}
cadastro_0 = dicionario['idade']
print(str(cadastro_0) + ' anos!')

cadastro_1 = dicionario['cidade']
print(cadastro_1)

Adicionando novas chaves

Você pode adicionar novas chaves ao dicionário atribuindo um valor à chave desejada. Exemplo:

dicionario['bairro'] = 'Jardim Presidente Dutra'
print(dicionario)

Observação: A ordem das chaves em um dicionário não é garantida. O Python não se importa com a ordem, apenas com a associação chave-valor. Por isso, não podemos acessar os elementos do dicionário pelo índice, como em listas.

Criando um dicionário vazio

Um dicionário vazio pode ser criado assim:

dicionario = {}

Para adicionar dados a esse dicionário vazio:

dicionario['graduação'] = 'Contabilidade'
print(dicionario)

Modificando valores

Para alterar o valor de uma chave, basta usar a chave e atribuir um novo valor. Exemplo:

dicionario['graduação'] = 'Administração'

Removendo chaves

Para remover uma chave e seu valor associado, você pode usar o comando del. Exemplo:

del dicionario['cidade']
print(dicionario)

Organizando o dicionário de forma legível

Você pode organizar a declaração do dicionário para torná-lo mais legível, colocando cada par chave-valor em uma linha separada. Exemplo:

dicionario = {
    'nome': 'Natanael',
    'idade': 27,
    'cidade': 'Guarulhos'
}

Métodos de Dicionário

dicionario.items()

O método .items() retorna uma lista de tuplas, onde cada tupla contém um par chave-valor. Exemplo:

for chave, valor in dicionario.items():
    print(f'{chave}: {valor}')

No exemplo acima, ocorre o desempacotamento de tupla, onde o Python separa automaticamente a chave e o valor de cada par. Assim, a variável chave recebe a chave, e valor recebe o valor correspondente.

Desempacotamento

O desempacotamento é o processo de dividir uma estrutura iterável (como tuplas, listas ou dicionários) em múltiplas variáveis. No exemplo acima, cada par chave-valor é "desempacotado" para chave e valor. O desempacotamento pode ser feito não apenas dentro de laços for, mas também em outras partes do código, como funções e atribuições.

Exemplo de desempacotamento fora de um for:

chave, valor = ('nome', 'Natanael')
print(chave)  # Saída: nome
print(valor)  # Saída: Natanael

O desempacotamento é uma técnica poderosa que permite trabalhar de maneira mais prática com estruturas iteráveis em Python.

Manipulando dados a partir de dicionários:

Podemos manipular conjuntos de dados de diversas maneiras. Dessa forma, é possível realizar diferentes operações utilizando dicionários.

dicionario_0 = {'primeiro': 1, 'segundo': 2}
dicionario_1 = {'terceiro': 3}
dicionario_2 = {'quarto': 4}

# Podemos armazenar todos os dicionários em uma única variável.
# Neste caso, utilizamos uma tupla.


tupla_dicionarios = (dicionario_0, dicionario_1, dicionario_2)
print(tupla_dicionarios)


# ({'primeiro': 1, 'segundo': 2}, {'terceiro': 3}, {'quarto': 4})

# Também podemos armazenar os dicionários em uma lista.


lista_dicionarios = [dicionario_0, dicionario_1, dicionario_2]


print(lista_dicionarios)
# [{'primeiro': 1, 'segundo': 2}, {'terceiro': 3}, {'quarto': 4}]

# Podemos percorrer a lista criada utilizando um laço de repetição.
for valores in lista_dicionarios:
    print(valores)

O que é “desempacotar”?

Imagine que você ganhou uma caixa com vários brinquedos dentro.

Essa caixa é a lista:

itens = [1, 2, 3, 4, 5]

Agora você quer tirar cada brinquedo da caixa e dar um nome para cada um.

Isso é desempacotar.

A caixa (lista)

A lista guarda tudo junto:

itens = [1, 2, 3, 4, 5]

É como uma caixa com 5 coisas dentro.

Tirando os brinquedos da caixa

Quando você escreve:

a, b, c, d, e = itens

Você está dizendo:

  • o primeiro brinquedo vai para a

  • o segundo vai para b

  • o terceiro vai para c

  • o quarto vai para d

  • o quinto vai para e

Fica assim:

  • a = 1

  • b = 2

  • c = 3

  • d = 4

  • e = 5

Cada variável pegou um valor da lista!

Ver tudo de uma vez

Se você pedir para mostrar a caixa inteira:

print(itens)

Vai aparecer:

[1, 2, 3, 4, 5]

Ver só um valor

Se você quiser ver só um brinquedo, por exemplo o que está em a:

print(a)

Vai aparecer:

1

Resumindo bem simples

  • A lista é uma caixa

  • Desempacotar é tirar cada coisa da caixa

  • Cada coisa ganha um nome

  • Assim fica mais fácil usar cada valor separado 

    Desempacotamento com Laços for.

    dicionario = {'primeiro': 1, 'segundo': 2, 'terceiro': 3}

    for lista, indice in dicionario.items():
        print(lista)
        print(indice)

    Saída:

    primeiro
    1
    segundo
    2
    terceiro

    Como podemos ver no método, existem duas variáveis criadas: <lista> e <indice>.
    Vejamos a explicação:

  • dicionario.items() retorna uma lista de tuplas (chave, valor) do dicionário.

  • Ou seja, dicionario.items() é equivalente a:

 [('primeiro', 1), ('segundo', 2), ('terceiro', 3)]

No for, você está desempacotando cada tupla em duas variáveis:

  • lista recebe a chave.

  • indice recebe o valor.

    Imprimindo os valores:

    print(lista)
    print(indice)
     
    Primeiro imprime a chave (lista).
    Depois imprime o valor (indice).
     
    Portanto, o loop imprime:
     
    primeiro
    1
    segundo
    2
    terceiro
    3

UTILIZANDO LAÇOS DE REPETIÇÃO COM MÉTODOS EM DICIONÁRIOS:

Um dicionário armazena pares de chave e valor.

dicionario = {'primeiro': 1, 'segundo': 2, 'terceiro': 3}

Acessando as chaves

# Retorna uma visualização das chaves do dicionário

print(dicionario.keys())

dict_keys(['primeiro', 'segundo', 'terceiro'])

# Convertendo as chaves para uma lista

print(list(dicionario.keys()))

['primeiro', 'segundo', 'terceiro']

Percorrendo as chaves (laço de repetição)

# Percorrendo as chaves do dicionário

for chave in dicionario.keys():

print(chave)

Saída:

primeiro

segundo

terceiro

Outros métodos de dicionários

Podemos utilizar outros métodos de dicionários. Todos os métodos podem ser usados fora dos laços de repetição; no entanto, dentro do for, a estrutura sempre será:

python - estrutura

for variavel in dicionario.metodo(): #Utilizando o método .values()

for valor in dicionario.values():

print(valor)

Saída:

1

2

3

Iterando com set(dicionario)

dicionario = {'primeiro': 1, 'segundo': 2, 'terceiro': 3}

for chave in set(dicionario):

print(chave)

Saída (ordem não garantida):

terceiro

primeiro

segundo

Observação: ao usar set(dicionário), a ordem dos elementos não é preservada, pois conjuntos (set) não mantêm ordem.

FUNÇÃO SET() - Muito utilizada em laços de repetição:

 O que é set() em Python?

Imagine que você tem uma caixa de brinquedos
Essa caixa tem uma regra muito importante:

Não pode ter brinquedos repetidos

Essa caixa especial é o set().

Exemplo simples

Se você colocar isto na caixa:

brinquedos = set(["bola", "carrinho", "bola", "boneca"])
print(brinquedos)

O Python vai dizer:

“Ei! Já tem uma bola, não vou guardar outra!”

Resultado:

{"bola", "carrinho", "boneca"}

Para que serve o set()?

Tirar coisas repetidas

numeros = [1, 2, 2, 3, 3, 3]
print(set(numeros))

Fica só:

{1, 2, 3}

Ver se algo está lá dentro

frutas = {"maçã", "banana"}

print("banana" in frutas)  # Sim
print("uva" in frutas)     # Não 

Colocar coisa nova na caixa

frutas.add("uva")

Tirar coisa da caixa

frutas.remove("maçã")

Regrinhas importantes

  • A caixa não tem ordem
    (não importa quem veio primeiro)

  • Não pode guardar coisas que mudam, tipo listas

  • Para criar uma caixa vazia:

caixa = set()

Resumo

  • set() é uma caixa

  • Não aceita coisas repetidas

  • Ajuda a organizar melhor

 FUNÇÃO RANGE EM DICIONÁRIOS

Para ilustrar como podemos utilizar a função range em conjunto com dicionários, vamos analisar o seguinte exemplo:

dicionario = []


for i in range(3):

listagem = {'indice': 'id', 'nome': 'nomes'}

dicionario.append(listagem)

print('total: ' + str(len(dicionario)))


Explicação passo a passo

Inicialmente, criamos uma lista vazia chamada dicionario.

Em seguida, utilizamos um laço de repetição for com a função range(3):

for i in range(3):


A função range(3) gera a sequência de valores:

0, 1, 2

Isso significa que o laço for será executado 3 vezes, e a variável i receberá esses valores a cada iteração:

  • 1ª iteração → i = 0

  • 2ª iteração → i = 1

  • 3ª iteração → i = 2

Criação do dicionário dentro do laço

Dentro do laço for, a cada iteração, é criado um novo dicionário:

listagem = {'indice': 'id', 'nome': 'nomes'}

Esse dicionário é então adicionado à lista dicionario por meio do método append():

dicionario.append(listagem)

Dessa forma, ao final do laço, a lista dicionario conterá 3 dicionários.

Resultado final

Após a execução do código, o conteúdo da lista será:

print(dicionario)

Saída:

[

{'indice': 'id', 'nome': 'nomes'},

{'indice': 'id', 'nome': 'nomes'},

{'indice': 'id', 'nome': 'nomes'}

]

Cada dicionário é um objeto independente, mesmo que possuam os mesmos valores.

Contando os itens da lista com len()

Durante o laço, também utilizamos a função len() para contar quantos itens existem na lista a cada iteração:

print('total: ' + str(len(dicionario)))

Saída:

total: 1

total: 2

total: 3

Observação sobre a função len()

Em Python, a função len() retorna o tamanho (quantidade de itens) de um objeto:

  • Em strings → conta quantos caracteres existem

  • Em listas → conta quantos elementos existem

  • Em dicionários → conta quantas chaves existem

Em resumo, len() responde à pergunta:

“Quantos itens existem dentro desse objeto?”

 MUDANDO CARACTERÍSTICAS DE ELEMENTOS EM UM DICIONÁRIO (com listas geradas por laço de repetição)

Podemos realizar a alteração de características de listas geradas por laço for em um dicionário, pois o python considera cada item como um objeto diferente, sendo assim, possível alterações individualizadas.

lista = []

for listagem in range(3):

dicionario = {'nome': 'nomes', 'numeração': 'item'}

lista.append(dicionario)

for indice in lista:

if indice['nome'] == 'nomes':

indice['nome'] = 'cadastro'

indice['numeração'] = 'id'

elif indice['nome'] == 'nome':

dicionario['numeração'] = 'numeros'


print(lista)

[{'nome': 'cadastro', 'numeração': 'id'}, {'nome': 'cadastro', 'numeração': 'id'}, {'nome': 'cadastro', 'numeração': 'id'}]

 Acesso às informações em um dicionário

  Considere o dicionário abaixo:

lista = {'nomes': 'primeiro nome', 'sobrenomes': 'últimos sobrenomes'}
print(lista['nomes'])

Saída:

primeiro nome

Nesse caso, o acesso é feito por meio da chave do dicionário ('nomes').

LISTAS EM UM DICIONARIO


dados_cnpj = {'numero de inscrição':'none','endereço':['Ribas do Rio Pardo','99','Soimco','Guarulhos','Sao Paulo']}

for cnpj in dados_cnpj['endereço']:

print(cnpj)

Ribas do Rio Pardo

99

Soimco

Guarulhos

Sao Paulo


# 1° percorremos o dicionário dados_cnpj com um laço for, a chave endereço possui uma lista associada a ela.

# para exibir os dados usamos a chave endereço.


cadesp = {'IE':['CNPJ','Nome','Nome Fantasia'],'endereço':['RUA RIBAS DO RIO PARDO','99','CEP: 07.182-150','Município: GUARULHOS','Bairro: CIDADE SOIMCO','UF: SP']}

for pesquisa, empresa in cadesp.items():

print("cadastro é"+pesquisa)

for consulta in empresa:

print(consulta)

cadastro éIE

CNPJ

Nome

Nome Fantasia

cadastro éendereço

RUA RIBAS DO RIO PARDO

99

CEP: 07.182-150

Município: GUARULHOS

Bairro: CIDADE SOIMCO

UF: SP


DICIONÁRIOS EM UM DICIONARIO


consulta_optantes = {'Situação Atual':{'Situação no Simples Nacional:':'Optante pelo Simples Nacional desde 19/09/2025','Situação no SIMEI:':'Enquadrado no SIMEI desde 19/09/2025'},

'Períodos Anteriores':{'Opções pelo Simples Nacional em Períodos Anteriores:':' Não Existem'}}


for optantes, situação in consulta_optantes.items():

status = situação.get('Situação no SIMEI:')

if status:

print(status)

Enquadrado no SIMEI desde 19/09/2025


porque o codigo não pode ser estruturado da seguinte maneira?


for optantes, situação in consulta_optantes.items():

status = situação.get('Situação no SIMEI')


print(status) None


explicando:


O None acontece porque a chave que você está buscando não existe em todas as iterações do loop.

Na primeira iteração (Situação Atual), a chave existe → retorna o valor correto.

Na segunda iteração (Períodos Anteriores), essa chave não existe.get() retorna None.

Como o loop continua, o valor final de status fica sendo None.

 

Acesso por índice

Dicionários não possuem índices numéricos. Para acessar os valores por posição, é necessário primeiro convertê-los em uma lista:

lista = {'nomes': 'primeiro nome', 'sobrenomes': 'ultimos sobrenomes'} valores = list(lista.values()) print(valores[1]) # acessa o segundo valor

Saída:

últimos sobrenomes

 Explicando o fatiamento (slice)

O fatiamento [:] é usado para acessar partes de listas, strings ou outros objetos sequenciais.

Formato geral:

 lista[inicio:fim]

Exemplos:

  • [:] → copia toda a lista

  • [0:3] → pega os três primeiros elementos

  • [1:4] → pega os elementos do índice 1 ao 3

  • [2:] → do índice 2 até o final

  • [:3] → do início até o índice 2

Exemplo prático:

lista = {'nomes': 'primeiro nome', 'sobrenomes': 'ultimos sobrenomes'}
valores = list(lista.values())
print(valores[:])

Saída:

['primeiro nome', 'ultimos sobrenomes']

Esse comando retorna todos os valores do dicionário convertidos em lista.

Outro detalhe importante:

Em Python, o : (dois-pontos) indica que a partir dali começa um bloco de código.

Ele diz ao Python:

“A próxima linha (indentada) faz parte desta instrução.”

Python não usa { } como outras linguagens — ele usa : + indentação.


Onde o : é usado

Estruturas de decisão (if, elif, else)

if idade >= 18:

print("Maior de idade")


Laços de repetição (for, while)


for i in range(3):

print(i)

Tudo que estiver indentado executa dentro do loop.


Funções (def)

def saudacao():

print("Olá!")

O : indica onde começa o corpo da função.


Classes (class)

class Pessoa:

pass


Define o bloco da classe.


Dicionários (significado diferente)

dados = {"nome": "Ana", "idade": 15}

Aqui o : separa chave e valor, não cria bloco.


: indica o início de um bloco de código

  • O bloco é definido pela indentação

  • Substitui {} de outras linguagens

  • Em dicionários, o : apenas separa chave : valor


 

 

 

Comentários