Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Словари в 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, in 
    print "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, in 
    print "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, in 
    dict = {['Name']: 'Zara', 'Age': 7}
TypeError: unhashable type: 'list'

Встроенные функции и методы словарей

Функции:

№Функция и описание
1cmp(dict1, dict2) — сравнивает элементы обоих словарей
2len(dict) — общая длина (число пар ключ-значение)
3str(dict) — строковое представление словаря для печати
4type(variable) — тип переменной; для словаря вернёт dict type

Методы:

№Метод и описание
1dict.clear() — удаляет все элементы словаря
2dict.copy() — возвращает поверхностную копию словаря
3dict.fromkeys(seq, value) — создаёт новый словарь с ключами из seq и значениями value
4dict.get(key, default=None) — возвращает значение для key или default, если ключа нет
5dict.has_key(key) — true, если ключ есть в словаре, иначе false
6dict.items() — список пар (ключ, значение) как кортежи
7dict.keys() — список ключей словаря
8dict.setdefault(key, default=None) — как get(), но устанавливает dict[key]=default, если ключа нет
9dict.update(dict2) — добавляет пары ключ-значение из dict2 в dict
10dict.values() — список значений словаря

Python

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  5. Словари в Python: создание, манипуляции и продвинутые техники
  6. Итераторы в Python: как они работают и как создать свои
  7. Замыкания в Python: как вложенные функции захватывают переменные
  8. Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
  9. Обзор Python: высокоуровневый, читаемый, интерактивный и объектно-ориентированный язык
  10. Числа в Python: Неизменяемые числовые типы данных