Learnly
Python с нуля/Глава 6/Урок 2

Словари: данные с ключами

Словари: данные с ключами

Список хранит элементы с числовыми индексами: 0, 1, 2... Но часто удобнее обращаться к данным по имени, а не по номеру. Для этого существуют словари.

Аналогия: словарь, это картотека

В картотеке каждая карточка лежит под именем. Хочешь найти "Иванов Алексей", ищешь по имени, а не перебираешь все карточки подряд.

Словарь в Python: каждый элемент, это ключ (имя) и значение. Ключ, уникальный идентификатор, значение, данные.

Как создать словарь

# Пустой словарь
empty = {}

# Словарь с данными
user = {
    "name": "Алекс",
    "age": 25,
    "city": "Москва",
    "is_active": True
}

Доступ к значениям

user = {"name": "Алекс", "age": 25, "city": "Москва"}

print(user["name"])    # Алекс
print(user["age"])     # 25

# Безопасный доступ, не выдаст ошибку если ключа нет
print(user.get("email"))          # None
print(user.get("email", "нет"))   # нет

Изменение словаря

user = {"name": "Алекс", "age": 25}

# Изменить значение
user["age"] = 26

# Добавить новую пару
user["email"] = "alex@example.com"

# Удалить ключ
del user["email"]

print(user)   # {'name': 'Алекс', 'age': 26}

Перебор словаря

profile = {"name": "Алекс", "age": 25, "city": "Москва"}

# Перебрать все пары ключ-значение
for key, value in profile.items():
    print(f"{key}: {value}")

# Результат:
# name: Алекс
# age: 25
# city: Москва

Реальный пример: хранение данных о пользователях

users = [
    {"name": "Алекс",    "age": 25, "city": "Москва"},
    {"name": "Мария",    "age": 30, "city": "СПб"},
    {"name": "Дмитрий",  "age": 22, "city": "Казань"},
]

# Найти пользователей старше 24 лет
for user in users:
    if user["age"] > 24:
        print(f"{user['name']} из {user['city']}")

# Алекс из Москвы
# Мария из СПб

Список словарей, один из самых распространённых паттернов в Python. Именно так выглядят данные, которые приходят из API или базы данных.

💡 Главная мысль: Словарь, это набор пар "ключ: значение". Ключ, это имя, по которому ты обращаешься к данным. Это намного удобнее числовых индексов когда данные имеют смысл ("name", "age") а не просто порядок.