1. Что такое словари Питон (Python dict)
Словари вPython— это структура данных, которая позволяет хранить коллекции пар «ключ— значение». Доступ кзначению осуществляется через его уникальный ключ, втовремя как сами значения могут повторяться.
Например:
Например:
Ключ | Значение |
---|---|
«Война и мир» | Л.Н. Толстой |
Тоесть Л.Н.Толстой написал множество произведений, ноукаждого изних один автор.
Ключ | Значение |
---|---|
«Война и мир» | Л.Н. Толстой |
«Анна Каренина» | Л.Н. Толстой |
Если мызнаем ключ, внашем случае— название романа, тобез проблем найдем значение— автора.
Для чего применяются словари
Словари вPython нужны разработчикам, чтобы хранить большие объемы данных, атакже быстро ипросто извлекать нужное значение, используя ключ. Рассмотрим несколько примеров.
- Подсчет каких-либо предметов. В этом случае ключами будут названия предметов, а значениями — их количество.
text = 'hello world hello'
word_counts = {}
for word in text.split():
word_counts[word] = word_counts.get(word, 0) + 1
print(word_counts) # Выведет: {'hello': 2, 'world': 1}
- Хранение сложных данных. Словари могут содержать другие словари, что позволяет создавать сложные структуры данных.
students = {
'Alice': {'age': 25, 'courses': ['Math', 'Physics']},
'Bob': {'age': 22, 'courses': ['Biology', 'Chemistry']}
}
print(students['Alice']['courses']) # Выведет: ['Math', 'Physics']
- Группировка данных по заданному критерию. Благодаря этому можно упорядочить и структурировать информацию.
data = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 25}
]
grouped_data = {}
for item in data:
age = item['age']
if age not in grouped_data:
grouped_data[age] = []
grouped_data[age].append(item['name'])
print(grouped_data) # Выведет: {25: ['Alice', 'Charlie'], 30: ['Bob']}
- Кэширование и мемоизация результатов вычислений. Это помогает улучшить производительность кода.
factorial_cache = {}
def factorial(n):
if n in factorial_cache:
return factorial_cache[n]
if n = 0:
result = 1
else:
result = n * factorial(n-1)
factorial_cache[n] = result
return result
print(factorial(5)) # Вычисление и кэширование факториала 5
print(factorial_cache) # Выведет: {5: 120, 4: 24, 3: 6, 2: 2, 1: 1, 0: 1}
Особенности словарей
Ключи Python должны быть неизменяемыми типами данных— например, строками, числами или кортежами. Если сделать ключом список, словарь или другой изменяемый тип данных, возникнет ошибка. Авот значения словаря Python могут быть абсолютно любыми, втом числе идругими словарями.
invalid_dict = {[1, 2, 3]: 'invalid'} # Ошибка
valid_dict = {(1, 2, 3): 'valid'} # Корректно
hr_info = {
'ученик1': {'имя': 'Петр', 'класс': '5'},
'ученик2': {'имя': 'Алексей', 'класс': '7'},
'ученик3': {'имя': 'Михаил', 'класс': '11'}}
print(hr_info['ученик2']['имя'])}
Словари являются изменяемыми (mutable) структурами данных. Ихсодержимое можно редактировать после создания— добавлять новые пары «ключ— значение», изменять существующие значения или удалять элементы.
student['age'] = 26 # Изменение значения по ключу
student['grade'] = 'A' # Добавление новой пары
del student['courses'] # Удаление пары по ключу
Ключи нельзя повторять. Если добавить идентичный ключ, Python сохранит только туверсию, которая была последней.
dict = {
'name': 'Марина', 'name': 'Марина'}
print(dict)
{'цвет': 'синий'}
Словари— это неупорядоченные системы данных. Носверсии 3.7 порядок вставки ключей сохраняется.
dict = {
'цвет': 'белый', 'наименование': 'свитер', 'материал': 'шерсть'}
print(dict['наименование'],dict['материал'])
свитер шерсть
Как создавать словари Питон
Способ 1: с помощью фигурных скобок
Это самый простой способ создания словарь вPython. Сначала указывается ключ, затем ставится двоеточие, идобавляется соответствующее значение. Все это помещается вфигурные скобки.
movie = {
'название':'Мстители',
'режиссер':'Джосс Уидон',
'год':'2012'}
}(movie)
Способ 2: спомощью функций словарей Python— dict иzip () иdict ()
dict ()— ключи изначения здесь задаются вручную.
dict = dict(class = 'mammals', squad = 'artiodactyls', family = 'deer')
printdict)
{'class': 'mammals', 'squad': artiodactyls, 'family': 'deer'}
Способ 3: с помощью списка кортежей
Вэтом случаем первым элементом будет ключ, авторым— значение.
item = [('питомец', 'собака'), ('порода', 'мопс'), ('кличка', 'Жора')]
item_dict = dict(item)
print(item_dict)
{'питомец': 'собака', 'порода': 'мопс', 'кличка': 'Жора'}
zip () иdict () также можно использовать вместе для создания словаря издвух списков— одного сключами, другого созначениями.
keys = ['форма', 'цвет', 'материал', 'стоимость']
values = ['круглый', 'черный', 'кожа', 20000]
info = dict(zip(keys, values))
print(info)
{'форма': 'круглый', 'цвет': 'черный', 'материал': 'кожа', 'стоимость': 20000}
Способ 4: спомощью метода fromkeys ()
Можно создать словарь сзаданными ключами иодним значением поумолчанию для всех ключей.
dict = dict.fromkeys(['красный', 'синий', 'желтый', зеленый'], 100)
print(dict)
{'красный': 100, 'синий': 100, 'желтый': 100, 'зеленый': 100}
Способ 5: с помощью генераторов словарей
Они позволяют создавать словари наоснове списков истрок. Эти инструменты помогают проводить подсчеты, сравнение, атакже преобразовывать типы данных вусловия.
dict1 = ['w': 5, 'q': 10, 'r': 15, 's': 20: 'g': 25]
double_dict1 = {k: v * 5 for (k, v) in dict1.items()}
print(double_dict1)
{'g':125, 'w': 25, 'r': 75, 'q': 50, 's': 100}
Как создать пустой словарь в Python
Это можно сделать двумя способами:
- Спомощью фигурных скобок {} без указания каких-либо элементов внутри них: `dict = {}`.
- Благодаря встроенной функции dict (), которая возвращает новый пустой словарь: `dict = dict ()`.
Основные операции словарей
Словарь создан. Теперь нам нужно научиться взаимодействовать сним иего основными элементами.
Выводим значение по ключу
Обращение кключу словаря Python позволяет извлечь его значение. Дляэтого нужно использовать квадратные скобки:
# Создаем словарь
dict = {
'Война и Мир': 'Толстой','Капитанская дочка': 'Пушкин'
}
# Указываем значение в квадратных скобках
war_and_peace_author = dict['Война и мир']
print(warandpeaceauthor)
# В итоге получается значение
> Толстой
Проверяем наличие ключа
Используем оператор in:
if 'name' in person:
print('Name is present')
else:
print('Name is not present')
Добавляем элемент в словарь Питон
Задаем ключ вквадратных скобках, используем оператор присваивания идобавляем значение:
dict['Капитанская дочка'] = 'Пушкин'
print(dict)
> {'Война и мир': 'Толстой', 'Капитанская дочка': 'Пушкин'}
Удаляем элемент из словаря
Условаря Питон есть разные команды. Одна изних— del. Сеепомощью можно удалить элемент словаря. Для этого нужно ввести ключ, азначение удалится вместе сним:
del dict['Капитанская дочка']
print(dict)
> {'Война и мир': 'Толстой'}
Меняем значение ключа
Значение изменится, если вквадратных скобках мынапишем уже существующий ключ, ачерез знак равенства укажем его новое значение:
dict['Война и мир'] = 'Пушкин'
В итоге значение должно поменяться, на:
print(dict)
> {'Война и мир': 'Пушкин', 'Капитанская дочка': 'Толстой'}
Объединение словарей
В Python 3.9+ можно использовать оператор | для объединения словарей:
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged_dict = dict1 | dict2
print(merged_dict) # Выведет: {'a': 1, 'b': 3, 'c': 4}
Для более ранних версий Python можно использовать метод update (). Подробнее онем мыпоговорим дальше.
Методы словарей
Это определенный набор функций Python, которые созданы совместно сословарем. Эти методы позволяют эффективно манипулировать, управлять доступом ипреобразовывать словарь данных. Они вомногом упрощают работу сословарями Python. Основные изних предлагаем рассмотреть напримерах.
- items() возвращает все пары «ключ — значение» в виде списка кортежей.
book_authors = {
'Война и мир': 'Толстой',
'Капитанская дочка': 'Пушкин'
}
print(book_authors.items()) # dict_items([('Война и мир', 'Толстой'), ('Капитанская дочка', 'Пушкин')])
2. get () —возвращает значение поключу, если ключ существует, иначе возвращает значение поумолчанию, если оно указано.
print(book_authors.get('Мертвые души', 'Не найдено')) # Гоголь
print(book_authors.get('Преступление и наказание', 'Не найдено')) # Не найдено
3. keys() — возвращает все ключи.
print(book_authors.keys()) # dict_keys(['Война и мир', 'Капитанская дочка'])
4. values() — возвращает все значения.
print(book_authors.values()) # dict_values(['Толстой', 'Пушкин'])
5. update ()— обновляет словарь, добавляя пары «ключ— значение» издругого словаря.
new_books = {'Мертвые души': 'Гоголь', 'Идиот': 'Достоевский'}
book_authors.update(new_books)
print(book_authors) # {'Война и мир': 'Толстой', 'Капитанская дочка': 'Пушкин', 'Мертвые души': 'Гоголь', 'Идиот': 'Достоевский'}
6. pop () —удаляет элемент поключу ивозвращает его значение. Если ключ ненайден, тоисполнение данного метода приведет кошибке KeyError. Этого можно избежать, если указать значение поумолчанию.
author = book_authors.pop('Капитанская дочка')
print(author) # 'Пушкин'
print(book_authors) # {'Война и мир': 'Толстой', 'Мертвые души': 'Гоголь', 'Идиот': 'Достоевский'}
7. popitem() — удаляет и возвращает последнюю добавленную пару «ключ — значение».
book_authors = {
'Война и мир': 'Толстой',
'Капитанская дочка': 'Пушкин',
'Мертвые души': 'Гоголь'
}
8. clear() — удаляет все элементы из словаря.
book_authors.clear()
print(book_authors) # Выведет {}
9. copy() — возвращает поверхностную копию словаря.
original = {'a': 1, 'b': 2}
copy_dict = original.copy()
print(copy_dict) # Выведет: {'a': 1, 'b': 2}
10. setdefault() — возвращает значение по ключу, если ключ существует. Если нет, добавляет ключ со значением по умолчанию и возвращает это значение.
print(book_authors.setdefault('Преступление и наказание', 'Достоевский')) # Достоевский
print(book_authors) # {'Война и мир': 'Толстой', 'Капитанская дочка': 'Пушкин', 'Мертвые души': 'Гоголь', 'Идиот': 'Достоевский', 'Преступление и наказание': 'Достоевский'}
Коротко о главном
Словари Python представляют собой удобную иэффективную структуру данных, которая позволяет хранить информацию ввиде пар «ключ— значение». Они широко применяются впрограммировании для различных целей. Например, подсчета элементов, хранения данных, установления соответствий иоптимизации памяти.
При работе сословарями нужно учитывать ихособенности. Кпримеру, ключи всловарях уникальны иотносятся кнеизменяемым типам данных— строкам, числам или кортежам. Втовремя как значения могут повторяться иотноситься клюбому типу данных.
При работе сословарями нужно учитывать ихособенности. Кпримеру, ключи всловарях уникальны иотносятся кнеизменяемым типам данных— строкам, числам или кортежам. Втовремя как значения могут повторяться иотноситься клюбому типу данных.
Словари можно создавать пятью разными способами:
Операции словарей Python включают различные методы испособы работы сданными, хранящимися ввиде пар «ключ— значение». Косновным операциям относятся:
- перечислением пар ключей изначений;
- функцией dict иzip () иdict ();
- списком кортежей;
- методом fromkeys ();
- генератором словарей.
Операции словарей Python включают различные методы испособы работы сданными, хранящимися ввиде пар «ключ— значение». Косновным операциям относятся:
- вывод значения поключу;
- добавление элемента;
- проверка наличия ключа;
- удаление элемента;
- изменение значения ключа.
Для более удобной работы сословарями есть различные методы икоманды. Сихпомощью можно создавать копии, обновлять, извлекать значения поключам ивыполнять множество других операций сословарями.
Если выдочитали статью доконца, вам точно нужно развиваться вIT-сфере. Чтобы узнать еще больше ословарях Python, научиться писать код инайти востребованную профессию свысокой зарплатой, приходите накурс покурс по Python-разработке отProductStar. Там мыобучаем снуля накейсах реальных компаний ипомогаем выйти напервую работу еще доокончания курса.
Если выдочитали статью доконца, вам точно нужно развиваться вIT-сфере. Чтобы узнать еще больше ословарях Python, научиться писать код инайти востребованную профессию свысокой зарплатой, приходите накурс покурс по Python-разработке отProductStar. Там мыобучаем снуля накейсах реальных компаний ипомогаем выйти напервую работу еще доокончания курса.
Статья написана при участии эксперта — Данилы Логунова, разработчика РБК Pro