Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
21 Сен 2024
6 мин
25756

Как работать со словарями в Python

Пройдите тест, узнайте какой профессии подходите

Словари в Python — это быстрый и удобный способ хранить и искать данные по ключу.

Словарь — это структура данных, с помощью которой можно записывать и получать различные значения по ключу. В некоторых языках ключами и значениями словаря могут быть только специфические объекты. А в Python — любые сущности вплоть до пользовательских классов.

Как работать со словарями в Python

Словари — один из самых гибких встроенных типов данных в Python. Это коллекции пар «ключ — значение», где каждый ключ уникальный, а значения могут быть любыми объектами: числами, строками, списками, другими словарями.

Проще говоря, словарь — это настоящая записная книжка: вы ищете по имени, то есть ключу, и получаете нужную информацию, то есть значение.

Словари удобны, когда нужно:

  • Быстро искать данные по уникальному идентификатору. Например, по имени пользователя, ID, названию.
  • Структурировать информацию логично. Например, хранить данные о пользователе: {«name»: «Alice», «age»: 25, «email»: «alice@example.com»}.
  • Заменять громоздкие if-else или списки в ситуациях, где важен доступ по ключу.

Создание словаря на Python:

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

# Словарь с данными
user = {
"name": "John",
"age": 30,
"email": "john@example.com"
}

Как обращаться к значениям на Python:

print(user["name"]) # Выведет: John

Если ключа нет, выйдет KeyError. Но можно избежать этого с помощью .get():

print(user.get("phone", "Not found")) # Без ошибки, вернет "Not found"

Как добавлять и изменять значения на Python:

user["age"] = 31 # Изменение
user["phone"] = "123-456" # Добавление

Как удалять элементы на Python:

del user["email"] # Удаление по ключу

Python — популярный многофункциональный язык. Если вы знаете Python, сможете писать автотесты, анализировать данные, разрабатывать игры, ПО, приложения и сайты, заниматься машинным обучением. На курсе Skypro вы можете обучиться языку с нуля. Будет много практики — около 70% от всего объема курса. За время учебы вы сделаете несколько проектов, которые можно добавить в портфолио.

Итерация словаря

Итерация — это процесс последовательного перебора элементов коллекции. В случае со словарем перебирают ключи, значения или пары «ключ — значение». Благодаря такому подходу удобно обрабатывать данные, которые хранят в словаре. Например, их можно выводить, проверять, изменять или передавать куда-то дальше.

Итерация особенно полезна, когда нужно:

  • Пройтись по всем записям словаря.
  • Отфильтровать или изменить значения.
  • Выполнить действия над каждым элементом словаря, когда заранее неизвестно, какие ключи в нём есть.

Рассмотрим несколько методов, которые делают работу эффективнее.

Метод update()

Метод update() используют, чтобы обновить словарь. Он добавляет новые пары «ключ — значение» или изменяет значения уже существующих ключей.

Пример на Python:

user = {"name": "Alice", "age": 25}
user.update({"age": 26, "email": "alice@example.com"})
print(user)
# Вывод: {'name': 'Alice', 'age': 26, 'email': 'alice@example.com'}

Важно:

  • Значение перезапишется, если ключ уже существует.
  • Если ключ новый, он будет добавлен.

Метод удобный, особенно если нужно объединить данные из двух словарей или массово обновить поля.

Метод get()

С методом get() можно безопасно получить значение по ключу. При этом не будет ошибки, если такого ключа нет в словаре.

Пример на Python:

user = {"name": "Alice"}
print(user.get("age")) # None
print(user.get("age", 30)) # 30 — значение по умолчанию

Важно:

  • Если ключ найдется, вернется соответствующее значение.
  • Если ключа нет, вернется None или то, что вы передали как значение по умолчанию.

Метод пригодится, когда непонятно, есть ли нужный ключ, и если не хочется ждать исключение KeyError.

Метод pop()

Метод pop() используют, чтобы удалить ключ из словаря и одновременно получить его значение.

Пример на Python:

user = {"name": "Alice", "age": 25}
age = user.pop("age")
print(age) # 25
print(user) # {'name': 'Alice'}

Важно:

  • Если ключ нашелся, он удаляется и возвращается его значение.
  • Если ключа нет, будет ошибка, если только не передать значение по умолчанию:
    user.pop("email", "Not found")

Метод keys()

Метод keys() возвращает список всех ключей в словаре. Можно перебирать эти ключи, использовать для доступа к значениям или анализировать структуру данных.

Пример на Python:

user = {"name": "Alice", "age": 25}
for key in user.keys():
print(key)
# Вывод:
# name
# age

Метод пригодится, когда нужно узнать только ключи. Например, чтобы отфильтровать или изменить определенные поля.

Метод values()

Метод values() возвращает все значения из словаря.

Пример на Python:

user = {"name": "Alice", "age": 25}
for value in user.values():
print(value)
# Вывод:
# Alice
# 25

Метод можно использовать, если важны только значения, а ключи не интересуют.

Метод items()

Метод items() возвращает все пары «ключ — значение» в виде кортежей. Это самый универсальный способ итерироваться по словарю.

Пример на Python:

user = {"name": "Alice", "age": 25}
for key, value in user.items():
print(f"{key}: {value}")
# Вывод:
# name: Alice
# age: 25

Метод полезен, когда нужно работать сразу с ключами и значениями: для вывода, обработки или сериализации данных.

Другие методы словарей в Python

Кроме базовых, у словарей в Python есть и другие полезные методы, которые могут сделать работу с данными проще. Ниже — самые используемые.

Метод clear()

Метод clear() удаляет все элементы из словаря, делает его пустым. Это полезно, когда нужно очистить данные, но оставить сам объект словаря.

Пример на Python:

user = {"name": "Alice", "age": 25}
user.clear()
print(user) # Выведет: {}

Метод copy()

Метод copy() создает поверхностную копию словаря. Это полезно, если нужно работать с копией данных и не изменять оригинал.

Пример на Python:

user = {"name": "Alice", "age": 25}
user_copy = user.copy()
user_copy["age"] = 26
print(user) # {'name': 'Alice', 'age': 25}
print(user_copy) # {'name': 'Alice', 'age': 26}

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

Метод setdefault()

Метод setdefault() используют, чтобы получить значения по ключу. Если ключа нет, то он будет добавлен в словарь с заданным значением по умолчанию.

Пример на Python:

user = {"name": "Alice", "age": 25}
print(user.setdefault("email", "unknown@example.com")) # Вернет "unknown@example.com"
print(user) # {'name': 'Alice', 'age': 25, 'email': 'unknown@example.com'}

Если ключ уже существует, возвращается его значение, если нет — ключ создается с заданным значением по умолчанию.

Метод fromkeys()

Метод fromkeys() нужен, чтобы создать новый словарь из последовательности ключей — каждому ключу присваивается одинаковое значение.

Пример на Python:

keys = ["name", "age", "email"]
user = dict.fromkeys(keys, "N/A")
print(user) # {'name': 'N/A', 'age': 'N/A', 'email': 'N/A'}

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

Метод popitem()

Метод popitem() удаляет и возвращает случайную пару «ключ — значение» из словаря. Это удобно, если нужно извлечь элемент и при этом удалить его из коллекции.

Пример на Python:

user = {"name": "Alice", "age": 25}
key, value = user.popitem()
print(key, value) # name Alice
print(user) # {'age': 25}

При вызове этого метода извлекается случайная пара «ключ — значение» и удаляется из словаря.

Метод pop()

Метод pop() удаляет конкретный элемент словаря и возвращает его значение. Этот метод аналогичен get(), но, в отличие от get(), он удаляет элемент.

Пример на Python:

user = {"name": "Alice", "age": 25}
age = user.pop("age")
print(age) # 25
print(user) # {'name': 'Alice'}

Если ключ не существует и не передать второе значение по умолчанию, выйдет ошибка KeyError.

Главное о работе со словарями в Python

  • Словари — инструмент Python для хранения связанных данных. С ними можно легко и быстро получать доступ к значениям по ключу и гибко манипулировать структурой данных.
  • Словарь состоит из пар «ключ — значение», при этом ключи должны быть уникальными и неизменяемыми.
  • Чтобы безопасно получать значения, лучше использовать get(). Так получится избежать KeyError.
  • С методами keys(), values(), items() удобно перебирать словарь.
  • С помощью update() можно объединять словари, с помощью pop() — удалять элементы.
  • Ошибки часто возникают, когда возвращаются к несуществующим ключам или есть путаница с вложенными структурами.

Добавить комментарий