Stepik: Введение в словари (dict)
Что такое словари (dict)?
Словарь в Python - это изменяемая коллекция, которая хранит пары ключ-значение. Каждый ключ должен быть уникальным и неизменным объектом, таким как строка, число или кортеж, в то время как значения в словаре могут быть любого типа и могут быть изменены.
Словари в Python создаются с использованием фигурных скобок {} и содержат пары ключ-значение в формате ключ: значение.
Например, нам нужно описать следующие соответствия: английскому слову house соответствует русское дом, car - машина и т.
Для того, чтобы обращаться к какому-либо объекту по ключу, используется такой синтаксис:
{key1: value1, key2: value2,....., keyN: valueN}Пример словаря
d = {'house': 'дом', 'car': 'машина',
'tree': 'дерево', 'road': 'дорога'}
print(d)
# Вывод: {'house': 'дом', 'car': 'машина', 'tree': 'дерево', 'road': 'дорога'}Как этим всем можно пользоваться?
К словарю для получения значения можно обращаться по ключу (первое слово перед двоеточием).
d = {'house': 'дом', 'car': 'машина',
'tree': 'дерево', 'road': 'дорога'}
print(d['house'])
#Вывод: дом
# А если взять несуществующее значение, то будет ошибка
print(d[100])
# Вывод: print(d[100])
# ~^^^^^
# KeyError: 100Одному ключу в словаре может соответствовать только одно значение.
То есть если прописать 2 ключа, то результат вернет только одну пару, и только вторую:
d = {'house': 'дом', 'house': 'дом 2', 'car': 'машина'}
print(d)
#Вывод: {'house': 'дом 2', 'car': 'машина'}Также словарь можно задать с помощью функции dict
dict(ключ1 = значение1, ключ2 = значение2, ........)
Ключи должны быть обязательно строками и записаны без кавычек.
d = dict(one = 1, two = 2, three = '3', four = '4')
print(d)
# Вывод: {'one': 1, 'two': 2, 'three': '3', 'four': '4'}Почему в некоторых ситуациях используют {}, а в некоторых dict?
lst = [[2, 'неуд'], [3, 'удовлетворительно'], [4, 'хорошо'], [5, 'отлично']] print(lst)
Этот список с вложенными списками можно интерпретировать как словарь, где каждый список можно сделать парой ключ: значение.
lst = [[2, 'неуд'], [3, 'удовлетворительно'], [4, 'хорошо'], [5, 'отлично']]
d = dict(lst)
print(d)
# Вывод: {2: 'неуд', 3: 'удовлетворительно', 4: 'хорошо', 5: 'отлично'}Что можно использовать в качестве ключей?
Можно использовать любые неизменяемые типы данных:
- int: Целые числа, например 5, -3, 0.
- float: Числа с плавающей точкой, например 3.14, -0.001, 2.0.
- complex: Комплексные числа в виде a + bj, где a и b - это числа, а j - мнимая единица.
- str: Строки, представленные последовательностью символов в кавычках, например "Hello", 'Python', "123".
- tuple: Кортежи, представляющие упорядоченную последовательность элементов, которые также являются неизменяемыми.
- bool: Булевые значения True и False
Списки (list), множества (set) и словари (dict) не могут быть использованы в качестве ключей, так как они изменяемые типы данных. А в качестве значений могут быть абсолютно любые типы данных!
Пример, как можно использовать булевые значения и добавление значений в пустой словарь:
d = {}
d[True] = 'Истина'
d[False] = 'Ложь'
print(d)
# Вывод: {True: 'Истина', False: 'Ложь'}Если существующему ключу присвоить значение, то оно изменится:
d = {True: 'Истина', False: 'Ложь'}
d[True] = 1
print(d)
# Вывод: {True: 1, False: 'Ложь'}Операторы и функции работы со словарем
Измерить число элементов в словаре - len()
d = {True: 'Истина', False: 'Ложь'}
print(len(d))
# Вывод: 2Удаление пары ключ: значение из словаря - del
d = {True: 'Истина', False: 'Ложь'}
del d[True]
print(d)
# Вывод: {False: 'Ложь'}Проверка наличия ключа в словаре - in
d = {True: 'Истина', False: 'Ложь'}
print('abc' in d)
# Вывод: False
print(True in d)
# Вывод: TrueТакая проверка подходит только к ключам, а не к значениям!!!