Добрый, добрый Python
December 26, 2023

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

Такая проверка подходит только к ключам, а не к значениям!!!

ТЕКСТ ЛЕКЦИИ