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

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

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

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

Задача«Телефонный справочник»

Вы работаете над созданием простого телефонного справочника. Вам необходимо реализовать функциональность поиска номера телефона по имени человека. Справочник уже содержит несколько записей.

Формат ввода

Сначала вводится количество записей в телефонном справочнике n. Далее вводится n строк, каждая из которых содержит имя и номер телефона, разделенные пробелом. После этого вводится имя человека, чей номер телефона нужно найти

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

Если имя найдено в справочнике, программа должна вывести "Номер телефона для
[имя]: [номер телефона]". Если имя не найдено, программа должна вывести "Имя
[имя] не найдено в справочнике"

Пример

Ввод

3
Иван 1234567890
Петр 9876543210
Мария 5551234567
Петр

Вывод

Номер телефона для Петр: 9876543210

Подсказка

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

Словари в 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, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!