Вернуться на главную

Словари

Тема: Типы данных • Урок 6 из 7

Словари в Python

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

Создание словарей

Словари в Python создаются с помощью фигурных скобок {} или функции dict():

# Пустой словарь
empty_dict = {}
empty_dict2 = dict()

# Словарь с элементами
person = {
"name": "Иван",
"age": 30,
"city": "Москва"
}

# Создание словаря с помощью функции dict()
person2 = dict(name="Иван", age=30, city="Москва")

# Создание словаря из списка кортежей
items = [("name", "Иван"), ("age", 30), ("city", "Москва")]
person3 = dict(items)

Доступ к элементам словаря

Доступ к значениям в словаре осуществляется по ключу:

Интерактивный пример

# Создаем словарь
person = {
"name": "Иван",
"age": 30,
"city": "Москва"
}
print(person)

# Доступ по ключу
print(f"Имя: {person['name']}")
print(f"Возраст: {person['age']}")

# Добавление нового элемента
person["email"] = "ivan@example.com"
print(person)

# Изменение значения
person["age"] = 31
print(person)

# Удаление элемента
del person["city"]
print(person)

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

Python предоставляет множество полезных методов для работы со словарями:

person = {
"name": "Иван",
"age": 30,
"city": "Москва"
}

# Получение всех ключей
keys = person.keys()
print(keys) # dict_keys(['name', 'age', 'city'])

# Получение всех значений
values = person.values()
print(values) # dict_values(['Иван', 30, 'Москва'])

# Получение всех пар ключ-значение
items = person.items()
print(items) # dict_items([('name', 'Иван'), ('age', 30), ('city', 'Москва')])

# Получение значения с проверкой наличия ключа
name = person.get("name") # "Иван"
phone = person.get("phone") # None
phone = person.get("phone", "Не указан") # "Не указан" (значение по умолчанию)

# Удаление и возврат элемента
city = person.pop("city") # "Москва"

# Удаление и возврат произвольной пары ключ-значение
item = person.popitem() # ('age', 30)

# Обновление словаря
person.update({
"age": 31,
"city": "Санкт-Петербург",
"phone": "+7 123 456 7890"
})

# Очистка словаря
person.clear()

Проверка наличия ключа

Для проверки наличия ключа в словаре используется оператор in:

person = {
"name": "Иван",
"age": 30,
"city": "Москва"
}

if "name" in person:
print(f"Имя: {person['name']}")

if "phone" not in person:
print("Телефон не указан")

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

Словари могут содержать другие словари в качестве значений, что позволяет создавать сложные структуры данных:

# Вложенные словари
user = {
"name": "Иван",
"age": 30,
"address": {
"city": "Москва",
"street": "Ленина",
"house": 10
},
"contacts": {
"email": "ivan@example.com",
"phone": "+7 123 456 7890"
}
}

# Доступ к вложенным элементам
city = user["address"]["city"] # "Москва"
email = user["contacts"]["email"] # "ivan@example.com"

Словарные включения (Dictionary Comprehensions)

Аналогично списочным включениям, Python поддерживает словарные включения для компактного создания словарей:

# Создание словаря квадратов чисел
squares = {x: x**2 for x in range(1, 6)}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# С условием
even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(even_squares) # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

# Преобразование списка кортежей в словарь
items = [("apple", 5), ("banana", 3), ("orange", 2)]
fruit_count = {fruit: count for fruit, count in items}
print(fruit_count) # {'apple': 5, 'banana': 3, 'orange': 2}

Использование словарей в реальных задачах

Словари широко используются в Python для различных задач:

# Подсчет частоты элементов
text = "hello world hello python world python"
words = text.split()
word_count = {}

for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1

print(word_count) # {'hello': 2, 'world': 2, 'python': 2}

# Более компактный способ с использованием defaultdict
from collections import defaultdict

word_count = defaultdict(int)
for word in words:
word_count[word] += 1

print(dict(word_count)) # {'hello': 2, 'world': 2, 'python': 2}
← Предыдущий урокСледующий урок →