Словари в Python: Основы работы с ключами, значениями и доступом
Структура словаря
Каждый ключ отделен от значения двоеточием (:), пары разделены запятыми, всё заключено в фигурные скобки. Пустой словарь — просто {}.
Ключи уникальны в пределах словаря, значения могут повторяться. Значения — любой тип, ключи — только неизменяемые типы (строки, числа, кортежи).
Доступ к значениям словаря
Для доступа используются квадратные скобки с ключом:
Live Demo#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
Результат:
dict['Name']: Zara dict['Age']: 7
Обращение к несуществующему ключу вызывает ошибку:
Live Demo#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']
Результат:
dict['Alice']: Traceback (most recent call last): File "test.py", line 4, inprint "dict['Alice']: ", dict['Alice'] KeyError: 'Alice'
Обновление словаря
Можно добавить новую пару, изменить существующую или удалить:
Live Demo#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # обновление существующей записи
dict['School'] = "DPS School" # добавление новой
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
Результат:
dict['Age']: 8 dict['School']: DPS School
Удаление элементов словаря
Можно удалить отдельный элемент, очистить весь словарь или удалить сам словарь.
Для удаления всего словаря — оператор del:
Live Demo#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # удалить запись с ключом 'Name'
dict.clear() # удалить все записи
del dict # удалить сам словарь
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
Результат (исключение, так как словарь удалён):
dict['Age']: Traceback (most recent call last): File "test.py", line 8, inprint "dict['Age']: ", dict['Age'] TypeError: 'type' object is unsubscriptable
Примечание: метод del() обсуждается ниже.
Свойства ключей словаря
Значения могут быть любыми объектами. Ключи — нет.
Два важных правила:
(а) Не более одной записи на ключ. Дубликаты ключей недопустимы. При повторном присваивании побеждает последнее:
Live Demo#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
Результат:
dict['Name']: Manni
(б) Ключи должны быть неизменяемыми. Можно использовать строки, числа, кортежи. Списки ['key'] — нельзя:
Live Demo#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
Результат:
Traceback (most recent call last): File "test.py", line 3, indict = {['Name']: 'Zara', 'Age': 7} TypeError: unhashable type: 'list'
Встроенные функции и методы словарей
Функции:
| № | Функция и описание |
|---|---|
| 1 | cmp(dict1, dict2) — сравнивает элементы обоих словарей |
| 2 | len(dict) — общая длина (число пар ключ-значение) |
| 3 | str(dict) — строковое представление словаря для печати |
| 4 | type(variable) — тип переменной; для словаря вернёт dict type |
Методы:
| № | Метод и описание |
|---|---|
| 1 | dict.clear() — удаляет все элементы словаря |
| 2 | dict.copy() — возвращает поверхностную копию словаря |
| 3 | dict.fromkeys(seq, value) — создаёт новый словарь с ключами из seq и значениями value |
| 4 | dict.get(key, default=None) — возвращает значение для key или default, если ключа нет |
| 5 | dict.has_key(key) — true, если ключ есть в словаре, иначе false |
| 6 | dict.items() — список пар (ключ, значение) как кортежи |
| 7 | dict.keys() — список ключей словаря |
| 8 | dict.setdefault(key, default=None) — как get(), но устанавливает dict[key]=default, если ключа нет |
| 9 | dict.update(dict2) — добавляет пары ключ-значение из dict2 в dict |
| 10 | dict.values() — список значений словаря |
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Обзор Python: высокоуровневый, читаемый, интерактивный и объектно-ориентированный язык
- Числа в Python: Неизменяемые числовые типы данных