Como fazer um loop em um dicionário em Python

Compreender como iterar por meio de um dicionário Python é valioso. Essa técnica permite que você leia, manipule e produza o conteúdo de um dicionário. Loop em Python é fácil. Mas os iniciantes podem achar um pouco confuso, especialmente ao usá-lo com um iterável mais complexo, como um dicionário.

Aqui estão algumas maneiras de lidar com um dicionário Python usando loops.

Looping através de chaves e valores

Um dicionário em Python contém pares de valores-chave. Você pode iterar por meio de suas chaves usando o método keys () :

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.keys():
print("Key"+" "+i)
Output:
Key A
Key B
Key C

O código acima é um pouco mais detalhado do que você precisa. Você pode acessar as chaves chamando-as diretamente de myDict sem usar myDict.keys () .

Isso ocorre porque um loop for do Python escolhe as chaves por padrão quando vê um dicionário. Portanto, você pode escrever o código acima assim:

 for key in myDict:
print("Key"+ " " +key)
Output:
Key A
Key B
Key C

Para acessar os valores, use o método values ​​() correspondente:

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.values():
print(i)
Output:
2
5
6

Da mesma forma, você pode acessar os valores diretamente usando suas chaves:

 for key in myDict:
print(myDict[key])
Output:
2
5
6

Durante a iteração por meio de um dicionário, você pode acessar suas chaves e valores ao mesmo tempo. Você pode fazer isso de duas maneiras.

O primeiro método é iterar através do dicionário e acessar os valores usando o método dict [key] . Em seguida, imprima cada par de valores-chave dentro do loop:

 for key in myDict:
print(key, "|", myDict[key])
Output:
A | 2
B | 5
C | 6

Como alternativa, você pode acessar as chaves e valores simultaneamente usando o método items () :

 for key, value in myDict.items():
print(key, "|", value)
Output:
A | 2
B | 5
C | 6

Às vezes, você pode querer produzir o resultado na ordem inversa. Veja como fazer isso usando a função Sort () :

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for key, value in sorted(myDict.items(), reverse=True):
print(key, "|", value)
Output:
C | 6
B | 5
A | 2

Converter um dicionário em uma lista

Converter um dicionário em uma lista usando iteração é tão fácil quanto transformar uma lista em um dicionário .

Você pode criar uma lista contendo uma tupla individual para cada par de valores-chave:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append((key, value))
print(myList)
Output: [('A', 'MUO'), ('B', 'Google'), ('C', 'Python')]

Ou você pode converter o dicionário em uma lista aninhada de pares de valores-chave:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append([key, value])
print(myList)
Output: [['A', 'MUO'], ['B', 'Google'], ['C', 'Python']]

E se você quiser transformar um dicionário em uma lista esticada ou achatada:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList+= key, value
print(myList)
Output: ['A', 'MUO', 'B', 'Google', 'C', 'Python']

Somando os valores em um dicionário

É fácil somar todos os valores em um dicionário usando um loop for :

 myDict = {"A":6, "B":7, "C":9}
g = 0 # initilize a variable to store the running total
for i in myDict.values():
g += i # add each value to the total
print(g)
Output: 22

Isso é um equivalente iterativo ao uso da função sum () , que é um iterador em si. Portanto, você pode adicionar os valores usando sum () em vez de fazer um loop como fez acima:

 summedValues = sum(myDict.values())
print(summedValues)
Output: 22

Looping por meio de um dicionário Python aninhado

Um dicionário aninhado pode ser um pouco confuso para percorrer no início. Mas é tão fácil quanto iterar por meio de um normal.

O código abaixo, por exemplo, gera o conteúdo de cada lista do dicionário:

 myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.keys():
print(myDict[i])
Output:
[1, 2, 3]
[4, 5, 6]

Como em um dicionário regular, fazer um loop de todos os itens gera todos os pares de valores-chave em tuplas individuais:

 myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.items():
print(i)
Output:
('A', [1, 2, 3])
('B', [4, 5, 6])

Relacionado: Dicionário Python: como você pode usá-lo para escrever um código melhor

Você também pode ver valores específicos em um dicionário que contém outros dicionários. Mas lembre-se de que os valores de um dicionário complexo são os itens de outros dicionários dentro dele. Em essência, um dicionário complexo contém chaves pai e filho.

Vamos gerar os valores no dicionário complexo abaixo para ver como isso funciona:

 complexArray = {
"Detail" : {
"Name" : "Idowu",
"Logs" : 20,
"isAdmin" : True
},
"Activities" : {
"Inputs" : 14,
"Input Type" : "Video"
}
}
for value in complexArray.values():
print(value)
Output:
{'Name': 'Idowu', 'Logs': 20, 'isAdmin': True}
{'Inputs': 14, 'Input Type': 'Video'}

Usando essa visão, você pode imprimir valores específicos do dicionário acima.

Para visualizar os valores de Detalhe , por exemplo:

 for value in complexArray["Detail"].values():
print(value)
Output:
Idowu
20
True

Usando um loop for aninhado, você pode ver todos os valores de todas as chaves filhas:

 for value in complexArray.values():
for i in value.values(): # get the values of each key in the child dictionaries
print(i)
Output:
Idowu
20
True
14
Video

Independentemente do dicionário pai, a iteração acima produz todos os valores filho do dicionário aninhado.

Modificando Itens do Dicionário

Uma vez que um dicionário é mutável, você pode modificar seu conteúdo conforme desejar enquanto faz a iteração por ele.

Por exemplo, você pode trocar valores por chaves e inserir a saída em um novo dicionário:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
swappedDict = {}
for key, value in myDict.items():
swappedDict[value] = key
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}

Você também pode conseguir o acima usando o loop for em uma compreensão de dicionário:

 swappedDict = {value:key for key, value in myDict.items()}
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}

Você também pode excluir itens específicos de um dicionário enquanto o percorre. Esta é uma maneira bastante prática de remover duplicatas.

O código de exemplo abaixo remove itens duplicados e insere um deles de volta após iterar pela matriz:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python", "C" : "Python"}
for key in list(myDict.keys()):
if key == 'C':
del myDict[key]
myDict[key]="Python"
print(myDict)
Output: {'A': 'MUO', 'B': 'Google', 'C': 'Python'}

Brinque com dicionários Python

Um dicionário Python é uma ferramenta essencial para gerenciar dados na memória. Portanto, uma compreensão básica da estrutura de dados do dicionário, incluindo como iterar por meio dela e obter o que deseja, ajuda em cenários da vida real.

E como você pode personalizar o que acontece dentro de um loop Python, ele permite que você manipule sua saída. No entanto, iterar por meio de um dicionário Python é fácil, uma vez que você entende os conceitos básicos do loop Python.