Глубина вложения списков и словарей не должна быть слишком большой . Если вам при-
мерах, или если вы работаете с чужим кодом со значительной глубиной вложения, скорее
всего, у задачи существует более простое решение .
118 Глава 6 • Словари
Словарь в словаре
Словарь также можно вложить в другой словарь, но в таких случаях код быстро
усложняется. Например, если на сайте есть несколько пользователей с уникаль-
ными именами, вы можете использовать имена пользователей как ключи в сло-
варе. Информация о каждом пользователе при этом хранится в словаре, который
используется как значение, связанное с именем. В следующем примере о каждом
пользователе хранятся три вида информации: имя, фамилия и место жительства.
Чтобы получить доступ к этой информации, переберите имена пользователей
и словарь с информацией, связанной с каждым именем:
many_users.py
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}
for username, user_info in users.items():
print("\nUsername: " + username)
full_name = user_info['first'] + " " + user_info['last']
location = user_info['location']
print("\tFull name: " + full_name.title())
print("\tLocation: " + location.title())
В программе определяется словарь с именем
users
, содержащий два ключа: для
пользователей
'aeinstein'
и
'mcurie'
. Значение, связанное с каждым ключом,
представляет собой словарь с именем, фамилией и местом жительства пользова-
теля. В процессе перебора словаря
users
в точке Python сохраняет каждый ключ
в переменной
username
, а словарь, связанный с каждым именем пользователя, со-
храняется в переменной
user_info
. Внутри основного цикла в словаре выводится
имя пользователя .
В точке начинается работа с внутренним словарем. Переменная
user_info
, со-
держащая словарь с информацией о пользователе, содержит три ключа:
'first'
,
'last'
и
'location'
. Каждый ключ используется для построения аккуратно от-
форматированных данных с полным именем и местом жительства пользователя,
с последующим выводом сводки известной информации о пользователе :
Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Paris
Итоги
119
Обратите внимание на идентичность структур словарей всех пользователей. Хотя
Python этого и не требует, наличие единой структуры упрощает работу с вложен-
ными словарями. Если словари разных пользователей будут содержать разные
ключи, то код в цикле
for
заметно усложнится.
Достарыңызбен бөлісу: