Как перемещаться по словарю в Python
Понимание того, как перебирать словарь Python, очень важно. Этот метод позволяет вам читать, манипулировать и выводить содержимое словаря. Зацикливание в Python – это просто. Но новичков это может немного сбить с толку, особенно при использовании с более сложным итерабельным, таким как словарь.
Вот несколько способов работы со словарем Python с помощью циклов.
Цикл по ключам и значениям
Словарь в Python содержит пары ключ-значение. Вы можете перебирать его ключи с помощью метода keys () :
myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.keys():
print("Key"+" "+i)
Output:
Key A
Key B
Key C
Однако приведенный выше код немного более подробный, чем вам нужно. Вы можете получить доступ к ключам, вызывая их прямо из myDict без использования myDict.keys () .
Это потому, что цикл Python for по умолчанию выбирает ключи, когда видит словарь. Вместо этого вы можете написать приведенный выше код следующим образом:
for key in myDict:
print("Key"+ " " +key)
Output:
Key A
Key B
Key C
Для доступа к значениям используйте соответствующий метод values () :
myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.values():
print(i)
Output:
2
5
6
Точно так же вы можете получить доступ к значениям напрямую, используя их ключи:
for key in myDict:
print(myDict[key])
Output:
2
5
6
Выполняя итерацию по словарю, вы можете одновременно получить доступ к его ключам и значениям. Сделать это можно двумя способами.
Первый метод – перебрать словарь и получить доступ к значениям с помощью метода dict [key] . Затем распечатайте каждую пару ключ-значение в цикле:
for key in myDict:
print(key, "|", myDict[key])
Output:
A | 2
B | 5
C | 6
В качестве альтернативы вы можете получить доступ к ключам и значениям одновременно с помощью метода items () :
for key, value in myDict.items():
print(key, "|", value)
Output:
A | 2
B | 5
C | 6
Иногда вам может потребоваться вывести результат в обратном порядке. Вот как это сделать с помощью функции sorted () :
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
Преобразование словаря в список
Преобразовать словарь в список с помощью итерации так же просто, как преобразовать список в словарь .
Вы можете создать список, содержащий индивидуальный кортеж для каждой пары ключ-значение:
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')]
Или вы можете преобразовать словарь во вложенный список пар ключ-значение:
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']]
И если вы хотите преобразовать словарь в растянутый или уплощенный список:
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']
Добавление значений в словарь
С помощью цикла 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
Это итеративный эквивалент использования функции sum (), которая сама является итератором. Таким образом, вы можете добавлять значения с помощью sum () вместо цикла, как вы делали выше:
summedValues = sum(myDict.values())
print(summedValues)
Output: 22
Цикл по вложенному словарю Python
Вложенный словарь может сначала немного сбивать с толку. Но это так же просто, как итерация через обычную.
Например, приведенный ниже код выводит содержимое каждого списка в словаре:
myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.keys():
print(myDict[i])
Output:
[1, 2, 3]
[4, 5, 6]
Как и в обычном словаре, при циклическом извлечении всех элементов все пары ключ-значение выводятся в отдельных кортежах:
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])
Вы также можете увидеть определенные значения в словаре, содержащем другие словари. Но имейте в виду, что значения сложного словаря – это элементы других словарей внутри него. По сути, сложный словарь содержит родительский и дочерний ключи.
Давайте выведем значения в сложный словарь ниже, чтобы увидеть, как это работает:
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'}
Используя это понимание, вы можете распечатать определенные значения из приведенного выше словаря.
Чтобы просмотреть значения Детализации , например:
for value in complexArray["Detail"].values():
print(value)
Output:
Idowu
20
True
Используя вложенный цикл for , вы можете увидеть все значения всех дочерних ключей:
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
Независимо от родительского словаря вышеуказанная итерация выводит все дочерние значения из вложенного словаря.
Изменение элементов словаря
Поскольку словарь является изменяемым, вы можете изменять его содержимое по своему усмотрению во время итерации по нему.
Например, вы можете поменять местами значения ключей и вставить вывод в новый словарь:
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'}
Вы также можете добиться этого, используя цикл for в понимании словаря:
swappedDict = {value:key for key, value in myDict.items()}
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}
Вы также можете удалять определенные элементы из словаря, просматривая его. Это довольно удобный способ удалить дубликаты.
Приведенный ниже пример кода удаляет повторяющиеся элементы и вставляет один из них обратно после итерации по массиву:
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'}
Поиграйте со словарями Python
Словарь Python – важный инструмент для управления данными в памяти. Таким образом, базовое понимание структуры данных словаря, включая то, как ее перебирать и получать то, что вы хотите, помогает вам в реальных сценариях.
И поскольку вы можете настроить то, что происходит в цикле Python, он позволяет вам управлять своим выводом. Тем не менее выполнять итерацию по словарю Python легко, если вы понимаете основные концепции цикла Python.