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
Такая проверка подходит только к ключам, а не к значениям!!!