Книга «Изучаем Python»



Pdf көрінісі
бет69/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   65   66   67   68   69   70   71   72   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 6 • Словари
Перебор всех пар «ключ—значение»
Прежде чем ознакомиться с разными способами перебора, рассмотрим новый 
словарь, предназначенный для хранения информации о пользователе веб-сайта. 
В следующем словаре хранится имя пользователя, его имя и фамилия:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
То, что вы уже узнали в этой главе, позволит вам обратиться к любому 
отдель
ному атрибуту 
user_0
. Но что если вы хотите просмотреть 
все
данные 
из словаря этого пользователя? Для этого можно воспользоваться перебором 
в цикле 
for
:
user.py
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
 
for key, value in user_0.items():
 
print("\nKey: " + key)
 
print("Value: " + value)
Как мы видим в точке 

, чтобы написать цикл 
for
для словаря, необходимо создать 
имена для двух переменных, в которых будет храниться ключ и значение из каждой 
пары «ключ—значение». Этим двум переменным можно присвоить любые имена — 
с короткими однобуквенными именами код будет работать точно так же:
for k, v in user_0.items()
Вторая половина команды 
for
в точке 

включает в себя имя словаря, за которым 
следует вызов метода 
items()
, возвращающий список пар «ключ—значение». Цикл 
for
сохраняет компоненты пары в двух указанных переменных. В предыдущем при-
мере мы используем переменные для вывода каждого ключа 
v
, за которым следует 
связанное значение 
w

"\n"
в первой команде 
print
гарантирует, что перед каждой 
парой «ключ—значение» в выводе будет вставлена пустая строка:
Key: last
Value: fermi
Key: first
Value: enrico
Key: username
Value: efermi
Снова обратите внимание на то, что пары «ключ—значение» не возвращаются 
в порядке их хранения даже при переборе в словаре. Python не интересует порядок 


Перебор словаря
109
хранения пар «ключ—значение»; отслеживаются только связи между отдельными 
ключами и их значениями.
Перебор всех пар «ключ—значение» особенно хорошо работает для таких сло-
варей, как в примере 
favorite_languages.py
на с. 106: то есть для словарей, хра-
нящих один вид информации со многими разными ключами. Перебрав словарь 
favorite_languages
, вы получите имя каждого человека и его любимый язык 
программирования. Так как ключ всегда содержит имя, а значение — язык про-
граммирования, в цикле вместо имен 
key
и 
value
используются переменные 
name
и 
language
. С таким выбором имен читателю кода будет проще следить за тем, что 
происходит в цикле:
favorite_languages.py
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
 
for name, language in favorite_languages.items():
 
print(name.title() + "'s favorite language is " +
language.title() + ".")
Код в точке 

приказывает Python перебрать все пары «ключ—значение» в словаре. 
В процессе перебора пар ключ сохраняется в переменной 
name
, а значение — в пере-
менной 
language
. С этими содержательными именами намного проще понять, что 
делает команда 
print
в точке 

.
Всего в нескольких строках кода выводится вся информация из опроса:
Jen's favorite language is Python.
Sarah's favorite language is C.
Phil's favorite language is Python.
Edward's favorite language is Ruby.
Такой способ перебора точно так же работает и в том случае, если в словаре будут 
храниться результаты опроса тысяч и даже миллионов людей.
Перебор всех ключей в словаре
Метод 
keys()
удобен в тех случаях, когда вы не собираетесь работать со всеми 
значениями в словаре. Переберем словарь 
favorite_languages
и выведем имена 
всех людей, участвовавших в опросе:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
 
for name in favorite_languages.keys():
print(name.title())


110

Достарыңызбен бөлісу:
1   ...   65   66   67   68   69   70   71   72   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет