Словари

Привет! Сегодня мы поговорим о Словарях в Python.

Словарь (dict) в Python - это изменяемая коллекция, которая предоставляет связи между ключами и значениями. В отличие от списков, в словарях элементы хранятся не по порядку, а по ключам.

Зачем нужны словари?

Словари идеально подходят для организации данных в виде пар "ключ-значение". Они позволяют эффективно извлекать и обновлять значения, а также обеспечивают быстрый доступ к данным по ключу. Например, вместо хранения информации в двух списках (например, список имен и список возрастов), можно использовать словарь.

Создание

Словарь можно создать при помощи функции dict() или используя фигурные скобки {}. Как и в списках и кортежах, значения словарей могут быть разных типов данных, но ключи обязательно должны быть неизменяемого типа данных (строки, числа, кортежи).

empty_dict = dict() # {} filled_dict = {'name': 'John', 'age': 25, 'city': 'New York'} # {'name': 'John', 'age': 25, 'city': 'New York'} from_lists = dict(zip(['a', 'b', 'c'], [1, 2, 3])) # {'a': 1, 'b': 2, 'c': 3} from_string = {char: ord(char) for char in 'abc'} # {'a': 97, 'b': 98, 'c': 99} from_tuple = dict([('x', 1), ('y', 2)]) # {'x': 1, 'y': 2}

Взаимодействия

Вывод словаря

Вывод словаря можно реализовать при помощи функции print() двумя способами: полностью и частично.

print(filled_dict) # {'name': 'John', 'age': 25, 'city': 'New York'} print(filled_dict['name']) # John

Добавление и изменение элементов словарей

Добавление и изменение элементов словарей выполняется с указанием ключа, значение которого необходимо изменить

filled_dict['gender'] = 'Male' # Добавление элемента filled_dict['age'] = 26 # Изменение значения элемента

Вложенные словари и генераторы словарей

Синтаксис вложенных словарей и генераторов словарей похож на аналогичные конструкции других коллекций

nested_dict = {'person': {'name': 'Alice', 'age': 30}} dict_generator = {x: x**2 for x in range(5)}

Методы словарей

  1. Метод clear() очищает словарь

    a = {1, 2, 3} a.clear() print(a) # {}
  2. Метод copy() создаёт копию словаря

    a = {1, 2, 3} b = {3, 4, 5} print(a.difference(b)) # {1, 2}
  3. Метод get() возвращает значение по ключу. Если нет ключа, то возвращает None

    a = {1, 2, 3} a.discard(2) print(a) # {1, 3} a.discard(6) print(a) # {1, 3}
  4. Метод items() возвращает пары ключ-значение в виде кортежей

    a = {1, 2, 3} b = {3, 4, 5} print(a.intersection(b)) # {3}
  5. Метод keys() возвращает все ключи словаря

    a = {1, 2, 3, 4, 5} b = {2, 3, 4} print(b.issubset(a)) # True
  6. Метод pop() удаляет и возвращает случайное значение по ключу. Если ключа нет, можно указать значение по умолчанию

    a = {1, 2, 3, 4, 5} b = {2, 3, 4} print(a.issuperset(b)) # True
  7. Метод popitem() удаляет и возвращает последнюю пару ключ-значение

    a = {1, 2, 3} a.pop() print(a) # {1, 2}
  8. Метод setdefault() возвращает значение по ключу. Если ключа нет, добавляет ключ со значением по умолчанию

    a = {1, 2, 3} a.remove(3) print(a) # {1, 2} a.remove(6) # вызывает ошибку
  9. Метод update() обновляет словарь элементами из другого словаря или коллекции

    a = {1, 2, 3} b = {3, 4, 5} print(a.symmetric_difference(b)) # {1, 2, 4, 5}
  10. Метод values() возвращает все значения словаря

    a = {1, 2, 3} b = {3, 4, 5} print(a.union(b)) # {1, 2, 3, 4, 5}
  11. Метод fromkeys() создаёт новый словарь с заданными ключами и значением по умолчанию

    a = {1, 2, 3} b = {3, 4, 5} print(a.union(b)) # {1, 2, 3, 4, 5}

Функции списков

Функция len() возвращает длину ckjdf

a = {1, 2, 3, 4} print(len(a)) # 4

Функция sum() возвращает сумму элементов множества (если в списке есть не числа, то будет ошибка)

a = {1, 2, 3, 4} print(sum(a)) # 10

Функция min() возвращает наименьший элемент множества (если в множестве есть переменные разных типов данных, то будет ошибка)

a = {1, 2, 3, 4} print(min(a)) # 1 b = {'a', 'b', 'c', 'd'} print(min(b)) # a

Функция max() возвращает наибольший элемент множества (если в множестве есть переменные разных типов данных, то будет ошибка)

a = {1, 2, 3, 4} print(max(a)) # 4 b = {'a', 'b', 'c', 'd'} print(max(b)) # d

Оператор in

Оператор списка in работает точно также как и в цикле с функцией range. Он проверяет есть ли данный элемент в множестве

a = {1, 2, 3, 4} print(2 in a) # True print(12 in a) # False

Вывод элементов списка

При выводе множества его можно "распаковать" при помощи символа *, то есть убрать из вывода символы, которые дают нам понять что это множество: фигурные скобки, запятые и кавычки ([],'')

a = {1, 2, 3, 'a'} print(a) # (1, 2, 3, 'a') print(*a) # 1 2 3 a

В следующем уроке мы рассмотрим словари и их применение в Python.