Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Dictionary (Словари)

Словарь (неупорядоченные коллекции из разных объектов с доступом по ключу) создаётся при помощи фигурных скобок, внутри которых указываются пары "ключ-значение" через запятые. Также можно создать пустой словарь и позже добавлять пары. В Python словарь определён в классе dict. Иногда используют термин ассоциативные массивы или хеш-таблицы.


catDictionary = {"key1": "Barsik", "key2": "Murzik", "key3": "Vaska"}
emptyDictionary = {}

Другие варианты создания словарей.

С помощью функции dict():


dictionary = dict(short='dict', long='dictionary')
print(dictionary) # {'short': 'dict', 'long': 'dictionary'}

numberDict = dict([(1, 3), (2, 9)])
print(numberDict) # {1: 3, 2: 9}

С помощью метода fromkeys():


noneDictionary = dict.fromkeys(['a', 'b'])
print(noneDictionary) # {'a': None, 'b': None}

fullDictionary = dict.fromkeys(['a', 'b'], 9)
print(fullDictionary) # {'a': 9, 'b': 9}

И ключи и значения в одном словаре могут быть разных типов (строки, числа).

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

Число пар в словаре можно получить через len.


print(len(catDictionary)) # 3

Доступ к значению можно получить через ключ, указанный в квадратных скобках. Если указать неправильный ключ, то вернётся ошибка.


print(catDictionary["key3"]) # Vaska

Также можно через метод get().


val = catDictionary.get("key2")
print(val) # Murzik

При не существующем ключе можно вернуть собственное сообщение.


val = catDictionary.get("key5", "That key is not found")
print(val)

Проверить, есть ли проверяемый ключ в словаре можно через оператор in. В успешном случае возвращается True или 1, в противном случае возвращается False или 0.


print("key4" in catDictionary) # 0
print("key1" in catDictionary) # True

Получить все ключи можно через keys(). Метод возвращает значение типа dict_keys.


keys = catDictionary.keys()
print(list(keys))

Получить все значения ключей можно через values(). Метод возвращает значение типа dict_values.


values = catDictionary.values()
print(list(values)) # ['Murzik', 'Vaska', 'Barsik']

Получить все ключи со значениями можно через items().


items = catDictionary.items()
print(items)
# dict_items([('key2', 'Murzik'), ('key3', 'Vaska'), ('key1', 'Barsik')])

Чтобы обновить значение в словаре, нужно указать ключ и новое значение.


catDictionary["key1"] = "Ryzhik"

По такому же принципу можно добавить новый ключ со значением.


catDictionary["key4"] = "Murka"

Удалить элемент (ключ-значение) можно через оператор del. Также можно удалить весь словарь.


del catDictionary["key4"]

del catDictionary

Если мы не хотим удалять сам словарь, а только очистить его от элементов, то воспользуемся методом clear().


catDictionary.clear()
print(catDictionary)
# {}

Выражение favorites1 == favorites2 истинно потому, что словари не упорядочены и считаются эквивалентными, если состоят из одинаковых пар ключ-значение.

Списки с одинаковыми значениями элементов, но разным порядком их следования, равны не будут.

favorites1 = {'фрукт':'апельсины', 'число':42, 'животное':'кот'}
favorites2 = {'животное':'кот', 'число':42, 'фрукт':'апельсины'}
favorites1 == favorites2
# True
Реклама