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])
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.