Языки программирования

Словари

Словарь (dict) в Python — это ассоциативный массив или хеш. Это неупорядоченное множество пар ключ: значение с требованием уникальности ключей.

В отличие от последовательностей, доступ к элементам словаря производится по ключу, а не по индексу, ключ может быть любого типа, ключ не допускает изменений. Основные особенности словарей:

  • Доступ осуществляется по ключу, а не по индексу. По аналогии со списком, в словаре можно получить доступ к элементам в цикле по ключам;
  • Значения словаря хранятся в неотсортированном порядке, более того, ключи могут храниться не в том порядке, в котором они добавляются;
  • По аналогии со списками, словарь может хранить вложенные словари. Словарь может хранить в качестве значений объекты любого типа (heterogeneous). Ключ в словаре — immutable тип, может быть строкой, целым числом, float либо кортежем, состоящим из указанных типов.
  • Словари реализованы как хеш-таблицы с быстрым доступом.
  • Словари, так же как и списки, хранят ссылки на объекты, а не сами объекты.

Чтобы работать со словарём, его нужно создать. Создать его можно несколькими способами:
#1.C помощью литерала:
d = {}
print(d)
input()
#выведет: {}

d = {'dict': 1, 'dictionary': 2}
print(d)
input()
#выведет: {'dict': 1, 'dictionary': 2}

#2.C помощью функции dict:
d = dict(short='dict', long='dictionary')
print(d)
input()
#выведет: {'short': 'dict', 'long': 'dictionary'}

d = dict([(2, 1), (5, 6)])
print(d)
input()
#выведет: {2: 1, 5: 6}

#3.C помощью метода fromkeys:
d = dict.fromkeys(['a', 'b'])
print(d)
input()
#выведет: {'a': None, 'b': None}

d = dict.fromkeys(['a', 'b'], 100)
print(d)
input()
#выведет: {'a': 100, 'b': 100}

#4.C помощью генераторов словарей
d = {a: a ** 2 for a in range(7)}
print(d)
input()
#выведет:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}

Функции/методы словаря

dict() — создание словаря;
len() — возвращает число пар;
clear() — удаляет все значения из словаря;
copy() — создает псевдокопию словаря;
deepcopy() — создает полную копию словаря;
fromkeys() — создание словаря;
get() — получить значение по ключу;
has_key() — проверка значения по ключу;
items() — возвращает список значений;
iteriyems() — возвращает итератор;
keys() — возвращает список ключей;
iterkeys() — возвращает итератор ключей;
pop() — извлекает значение по ключу;
popitem() — извлекает произвольное значение;
update() — изменяет словарь;
values() — возвращает список значений;
itervalues() — возвращает итератор на список значений.
in — оператор, проверяет наличие значения по ключу;
del — оператор, удаляет пару по ключу;
dict() — конструирует словарь с помощью последовательности.

Доступ к значениям словаря

Пример вывода значения определенного ключа словаря:
dict = {
    "apple" : "яблоко",
    "bold" : "жирный",
    "bus" : "автобус",
    "cat" : "кошка",
    "car" : "автомобиль"}
print(dict["bus"])
input()
# выведет: автобус
Выведем все ключи и значения словаря в более или менее удобном для пользователя формате:
dict = {
    "apple" : "яблоко",
    "bold" : "жирный",
    "bus" : "автобус",
    "cat" : "кошка",
    "car" : "автомобиль"}
for item in dict:
    print(item, " => ", dict[item])
input()

# выведет:
apple  =>  яблоко
bold  =>  жирный
bus  =>  автобус
cat  =>  кошка
car  =>  автомобиль
Доступ к значениям словаря похож на индексирование, только здесь мы вместо индекса используем ключ, а не номер элемента.

Если обратиться к ключу, которого нет в словаре, то будет сгенерировано сообщение об ошибке.

Словари в Python:
Самоучитель по Python