• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 8. Словари

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Вывод ключей»

Вы работаете аналитиком в небольшом магазине. У вас есть информация о покупках, сделанных за день. Каждая покупка представлена в виде словаря, где ключ – это название товара, а значение – количество купленных единиц этого товара. Вам нужно составить общий список покупок и посчитать общее количество каждой позиции, проданной за день.

Формат ввода

Сначала вводится целое число N – количество покупок, зарегистрированных за день.
Затем N раз вводятся данные о каждой покупке. Каждая покупка вводится в следующем формате:
Сначала вводится целое число M – количество различных товаров в этой покупке.
Затем M раз вводится название товара (строка) и через пробел количество купленных единиц этого товара (целое число)

Формат Вывода

Выведите общий список товаров и общее количество проданных единиц каждого товара. Каждый товар должен быть выведен на отдельной строке в формате: "Название_товара Количество". Товары должны быть отсортированы в лексикографическом порядке по названию товара

Пример

Ввод

2
3
Яблоко 2
Молоко 1
Хлеб 1
2
Яблоко 1
Сыр 1

Вывод

Молоко 1
Сыр 1
Хлеб 1
Яблоко 3

Подсказка

Словари в питоне

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

Основные характеристики словарей

  • Ключи уникальны: Каждый ключ в словаре должен быть уникальным. Попытка добавить ключ, который уже существует, просто перезапишет его значение.
  • Изменяемость: Словари являются изменяемыми (mutable) объектами. Вы можете добавлять, изменять и удалять пары "ключ-значение" после создания словаря.
  • Неупорядоченность (исторически): В старых версиях Python (до 3.7) словари считались неупорядоченными. Однако, начиная с Python 3.7, они сохраняют порядок вставки элементов. Полагаться на этот порядок стоит с осторожностью, если ваш код должен работать на старых версиях.

Полезный совет: В качестве ключей можно использовать только неизменяемые (immutable) типы данных, такие как строки, числа или кортежи. Списки или другие словари не могут быть ключами, так как их можно изменить. А вот в качестве значений можно использовать абсолютно любые типы данных: числа, строки, списки и даже другие словари.

Способы создания словарей

Словари можно создавать несколькими способами:

1. Пустой словарь

my_dict = {}
# или с помощью встроенной функции
my_dict = dict()

2. Словарь с элементами (литеральный способ) Это самый распространённый и читаемый способ.

user_profile = {
    "username": "alex",
    "level": 15,
    "items": ["меч", "щит", "зелье"]
}

3. Использование функции dict с именованными аргументами Этот способ удобен для простых словарей, где ключи являются строками.

my_dict = dict(ключ1="значение1", ключ2="значение2")

4. Создание из списка кортежей (пар) Этот метод полезен, когда данные поступают в виде списка пар.

pairs = [('a', 1), ('b', 2), ('c', 3)]
my_dict = dict(pairs)
# Результат: {'a': 1, 'b': 2, 'c': 3}

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

Доступ к значениям словаря осуществляется через их ключи в квадратных скобках.

my_dict = {"ключ1": "значение1", "ключ2": "значение2"}
print(my_dict["ключ1"])  # Вывод: значение1

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

Безопасный доступ с помощью метода .get() Метод .get() вернёт None, если ключ не найден, и не вызовет ошибку. Вы также можете передать второй аргумент — значение по умолчанию, которое вернётся вместо None.

print(my_dict.get("ключ3"))  # Вывод: None
print(my_dict.get("ключ3", "не найдено")) # Вывод: не найдено

Изменение и добавление элементов

Добавлять или изменять элементы очень просто:

my_dict = {"ключ1": "старое значение"}

# Изменение существующего элемента
my_dict["ключ1"] = "новое значение"
print(my_dict["ключ1"])  # Вывод: новое значение

# Добавление нового элемента
my_dict["ключ3"] = "значение3"
print(my_dict)  # Вывод: {'ключ1': 'новое значение', 'ключ3': 'значение3'}

Для объединения словарей можно использовать метод .update():

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2) # Ключ 'b' будет перезаписан, 'c' будет добавлен
print(dict1) # Вывод: {'a': 1, 'b': 3, 'c': 4}

Удаление элементов

Элементы в словарях можно удалять несколькими способами:

  • Использование оператора del Удаляет пару по ключу. Вызывает ошибку KeyError, если ключ не найден.
    del my_dict["ключ1"]
    
  • Использование метода .pop() Удаляет элемент по ключу и возвращает его значение. Это полезно, если вам нужно использовать удаленное значение. Если ключ не найден, вызовет KeyError, но можно передать значение по умолчанию.
    my_dict = {'ключ2': 'значение2', 'ключ3': 'значение3'}
    value = my_dict.pop("ключ2")
    print(value)  # Вывод: значение2
    print(my_dict)  # Вывод: {'ключ3': 'значение3'}
    
  • Удаление всех элементов Метод .clear() очищает словарь, делая его пустым.
    my_dict.clear()
    print(my_dict)  # Вывод: {}
    

Перебор элементов словаря

1. Перебор ключей Это поведение по умолчанию при итерации по словарю.

for key in my_dict:
    print(key)

2. Перебор значений Используйте метод .values(), если вам нужны только значения.

for value in my_dict.values():
    print(value)

3. Перебор пар "ключ-значение" Это наиболее эффективный и читаемый способ, если вам нужны и ключи, и значения одновременно. Используйте метод .items().

for key, value in my_dict.items():
    print(f"Ключ: {key}, Значение: {value}")
main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!