 |
|
|
 |
| |
1.7. Словари
Сделаем небольшое отступление, так как вам необходимо познакомиться со словарями, кортежами и списками. Если вы знаток Perl, то уже имеете некоторое представление о словарях и списках, но вам, тем не менее, необходимо обратить внимание на кортежи.
Один из втроенных типов языка Python, словарь, сопоставляет ключам значения.
 |
| Словари в Python аналогичны хешам в Perl. В Perl имена переменных, хранящих хеши, всегда начинаются с символа %. Переменные в языке Python могут иметь произвольное имя, интерпретатор сам определяет их тип. |
 |
| Словари в Python схожи с экземплярами класса Hashtable в Java. |
 |
| Словари Python схожи с экземплярами объекта Scripting.Dictionary в Visual Basic. |
Пример 1.9. Определени словарей
>>> d = {"server":"mpilgrim", "database":"master"}  >>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["server"]  'mpilgrim' >>> d["database"]  'master' >>> d["mpilgrim"]  Traceback (innermost last): File "<interactive input>", line 1, in ? KeyError: mpilgrim
 |
Сначала мы создаем словарь с двумя записями и присваиваем его переменной d. Каждая запись является парой ключ-значение, весь набор записей перечисляется в фигурных скобках. |
 |
"server" является ключом, а ассоциированное с ним значение, d["server"], равно "mpilgrim". |
 |
"database" является ключом, а ассоциированное с ним значение, d["database"], равно "master". |
 |
Вы можете определить значение по ключу, но не можете определить ключи по значению. Так, выражение d["server"] дает "mpilgrim", но d["mpilgrim"] генерирует исключение, так как словарь не содержит записи с ключом "mpilgrim". |
Пример 1.10. Изменение словарей
>>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["database"] = "pubs"  >>> d {'server': 'mpilgrim', 'database': 'pubs'} >>> d["uid"] = "sa"  >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
 |
Ключи в словаре уникальны. Присваивание нового значения с существующим ключом заменяет старое. |
 |
В любой момент вы можете добавить новую запись. Синтаксис добавления записи аналогичен синтаксису замены значения в записи с существующим ключом. Возможно, в какой-то момент вы будете думать, что добавляете новую запись, в то время как на самом деле вы только изменяете значение в уже существующей записи. |
Обратите внимание, что новая запись (ключ "uid", значение "sa") появилась в середине. В самом деле, то что записи появились в том же порядке, в котором были введены — это случайность.
 |
| Словари не поддерживают порядок следования записей. Говорить, что порядок следования записей нарушается, некорректно — они просто не упорядочены. Эта важная особенность возможно будет раздражать, когда вы захотите получить записи в каком-то определенном воспроизводимом порядке (например, в алфавитном порядке ключей). Конечно, существует возможность это сделать, просто такая возможность не встроена в словарь. |
Пример 1.11. Смешивание различных типов данных в словарях
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'} >>> d["retrycount"] = 3  >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3} >>> d[42] = "douglas"  >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
 |
Словари предназначены не только для строк. Значения в словарях могут быть любого типа: строки, числа и даже другие словари. Совсем не обязательно, чтобы все значения в одном словаре были одного типа, по мере необходимости вы можете смешивать объекты различных типов. |
 |
На ключи в словарях все же накладываются некоторые ограничения. Они могут быть строками, числами и объектами некоторых других типов (более подробно об этом мы раскажем позже). Вы также можете использовать ключи разного типа в одном словаре. |
Дополнительная литература
Ключевые теги: Словари, Уроки Python |
|
|
| |
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Обсудить на форуме
Другие статьи по теме:
|
|
|
 |
|
 |
|
|
 |
| |
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости. |
|
|
 |
 |
|
|
 |
| |
 |
|
|
 |
| |
2010/09/15 - 21:00, Ср Member SRM 482 Начало: 2010/09/15 - 21:00, Ср Длительность: 1 ч 35 м
2010/09/25 - 22:00, Сб SRM 483 Начало: 2010/09/25 - 22:00, Сб Длительность: 1 ч 35 м
2010/10/06 - 07:00, Ср SRM 484 Начало: 2010/10/06 - 07:00, Ср Длительность: 1 ч 35 м
2010/10/21 - 17:00, Чт Member SRM 485 Начало: 2010/10/21 - 17:00, Чт Длительность: 1 ч 35 м
2010/10/26 - 21:00, Втр SRM 486 Начало: 2010/10/26 - 21:00, Втр Длительность: 1 ч 35 м
|
|
|
|
|
|
 |
|