Словарь в Python — это изменяемая и неупорядоченная коллекция данных, представленная в виде пар «ключ-значение».
В отличие от списков, которые индексируются целыми числами, словари позволяют использовать любые неизменяемые объекты в качестве ключей, такие как строки, числа и кортежи.
Пример создания словаря:
# Пустой словарь
my_dict = {}
# Словарь с данными
student = {
'имя': 'Иван',
'возраст': 20,
'курс': 2,
'оценки': [85, 90, 78]
}
Почему словари важны?
- Гибкость:
- Словари позволяют организовать данные более гибко, чем обычные последовательности.
- Использование ключей:
- Ключи словарей позволяют эффективно идентифицировать и получать доступ к значениям.
- Удобство хранения и обработки данных:
- Словари предоставляют удобные методы для добавления, изменения и удаления данных.
Пример использования словаря:
# Доступ к данным по ключу
print(student['имя']) # Вывод: Иван
# Изменение значения по ключу
student['возраст'] = 21
# Добавление нового элемента
student['предметы'] = ['математика', 'физика']
# Вывод ключей и значений
print(student.keys()) # Вывод: dict_keys(['имя', 'возраст', 'курс', 'оценки', 'предметы'])
print(student.values()) # Вывод: dict_values(['Иван', 21, 2, [85, 90, 78], ['математика', 'физика']])
- Какие задачи наиболее эффективно можно решить именно с помощью словарей?
- Способы создания словарей
- Задания для тренировки на создание словарей.
- Операции со словарями в Python:
- Задания на тренировку операций со словарями
- Перебор элементов словаря
- Задания на перебор словаря
- Отличия словарей от других структур данных
- Методы словарей
- Задания на использование методов словарей.
- Агрегатные функции и сортировка в словарях.
- Задания для тренировки
- Практические примеры использования словарей
- Практические задания на словари
- Задания повышенной сложности
Какие задачи наиболее эффективно можно решить именно с помощью словарей?
Словари в Python предоставляют множество возможностей для эффективного решения различных задач.
- Сопоставление данных:
- Пример: Хранение информации о студентах с использованием их имен в качестве ключей и данных (например, возраст, оценки) в качестве значений.
- Индексация и быстрый доступ:
- Пример: Использование словаря для индексации данных по уникальному идентификатору, что позволяет быстро получать доступ к нужным значениям.
- Группировка данных:
- Пример: Сохранение данных в словаре в виде групп, где каждая группа представлена ключом, а связанные с ней данные — значениями.
- Счетчики и подсчет элементов:
- Пример: Подсчет частоты встречаемости элементов в последовательности, где ключи — элементы, а значения — количество их появлений.
- Кеширование результатов:
- Пример: Сохранение результатов выполнения дорогостоящих операций в словаре для избежания повторных вычислений при одинаковых входных данных.
- Создание конфигураций и параметров:
- Пример: Хранение настроек программы в словаре для удобного доступа и изменения параметров.
- Сопоставление справочной информации:
- Пример: Создание справочника, где ключи — термины, а значения — их определения или связанные данные.
- Фильтрация и поиск данных:
- Пример: Использование словарей для фильтрации данных по определенному критерию, что может быть полезно при анализе данных.
Способы создания словарей
- Вручную:
- Простейший способ создания словаря — вручную указать ключи и соответствующие значения в фигурных скобках.
student = {'имя': 'Иван', 'возраст': 20, 'курс': 2}
- Простейший способ создания словаря — вручную указать ключи и соответствующие значения в фигурных скобках.
- Через функцию
dict()
:- Можно создавать словари, используя встроенную функцию
dict()
. Это особенно удобно, когда у вас есть последовательности ключей и значений.student = dict(имя='Иван', возраст=20, курс=2)
- Можно создавать словари, используя встроенную функцию
- С использованием генератора:
- Генераторы словарей предоставляют компактный способ создания словарей с использованием выражения в фигурных скобках.
squares = {x: x**2 for x in range(1, 6)} # Вывод: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
- Генераторы словарей предоставляют компактный способ создания словарей с использованием выражения в фигурных скобках.
- С использованием функции
zip()
:- Функция
zip()
позволяет объединять две последовательности в кортежи, которые затем можно использовать для создания словаря.keys = ['a', 'b', 'c'] values = [1, 2, 3] my_dict = dict(zip(keys, values)) # Вывод: {'a': 1, 'b': 2, 'c': 3}
- Функция
- С помощью метода
fromkeys()
:- Метод
fromkeys()
создает новый словарь с заданными ключами и начальным значением (по умолчаниюNone
).keys = ['a', 'b', 'c'] my_dict = dict.fromkeys(keys, 0) # Вывод: {'a': 0, 'b': 0, 'c': 0}
- Метод
- С использованием конструктора
dict()
:- Конструктор
dict()
может принимать различные формы входных данных, такие как другой словарь или последовательности кортежей.pairs = [('a', 1), ('b', 2), ('c', 3)] my_dict = dict(pairs) # Вывод: {'a': 1, 'b': 2, 'c': 3}
- Конструктор
Задания для тренировки на создание словарей.
Задание 1. Простое создание словаря: Создайте словарь, представляющий информацию о вашем друге. Включите ключи «имя», «возраст» и «хобби».
Задание 2. Создание словаря из двух списков: У вас есть два списка: один с именами студентов, другой с их оценками. Создайте словарь, используя имена в качестве ключей и оценки в качестве значений.
Задание 3. Генерация словаря с квадратами чисел: Используя генератор словаря, создайте словарь, где ключи — числа от 1 до 5, а значения — их квадраты.
Задание 4. Объединение двух списков в словарь: У вас есть два списка, один с названиями предметов, другой с оценками. Создайте словарь, где предметы будут ключами, а оценки — значениями. Если предмету не соответствует оценка, используйте значение
None
.
Задание 5. Создание словаря из текстовых данных: У вас есть текстовый файл с данными в формате «ключ: значение». Создайте словарь, считав данные из файла. Учтите, что значения могут быть числами или строками.
# Задание 1
friend_info = {'имя': 'Анна', 'возраст': 25, 'хобби': 'фотография'}
# Вывод: {'имя': 'Анна', 'возраст': 25, 'хобби': 'фотография'}
# Задание 2
students = ['Иван', 'Мария', 'Петр']
grades = [85, 90, 78]
grades_dict = dict(zip(students, grades))
# Вывод: {'Иван': 85, 'Мария': 90, 'Петр': 78}
# Задание 3
squares_dict = {x: x**2 for x in range(1, 6)}
# Вывод: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Задание 4
subjects = ['Математика', 'Физика', 'Химия']
grades = [92, 88, 95]
grades_dict = dict.fromkeys(subjects, None)
grades_dict.update(zip(subjects, grades))
# Вывод: {'Математика': 92, 'Физика': 88, 'Химия': 95}
# Задание 5
with open('data.txt', 'r') as file:
data = file.readlines()
data_dict = {}
for line in data:
key, value = line.strip().split(': ')
data_dict[key] = int(value) if value.isdigit() else value
# Вывод: {'name': 'John', 'age': 30, 'city': 'New York'}
Операции со словарями в Python:
- Доступ к значениям по ключу:
- Используйте ключ для получения значения из словаря. Если ключ не существует, возникает ошибка.
student = {'имя': 'Иван', 'возраст': 20, 'курс': 2} name = student['имя'] # Вывод: 'Иван'
- Используйте ключ для получения значения из словаря. Если ключ не существует, возникает ошибка.
- Изменение значений по ключу:
- Просто присвойте новое значение существующему ключу.
student['возраст'] = 21 # Теперь словарь выглядит так: {'имя': 'Иван', 'возраст': 21, 'курс': 2}
- Просто присвойте новое значение существующему ключу.
- Удаление элементов:
- Используйте ключ для удаления элемента из словаря с помощью оператора
del
.del student['курс'] # Теперь словарь выглядит так: {'имя': 'Иван', 'возраст': 21}
- Используйте ключ для удаления элемента из словаря с помощью оператора
- Проверка наличия ключа в словаре:
- Используйте оператор
in
для проверки наличия ключа в словаре.has_age = 'возраст' in student # Вывод: True
- Используйте оператор
- Безопасное получение значения по ключу с методом
get()
:- Метод
get()
позволяет получить значение по ключу, и если ключ отсутствует, возвращает значение по умолчанию (илиNone
, если не указано).age = student.get('возраст', 'Неизвестно') # Вывод: 21
- Метод
- Методы
keys()
,values()
,items()
:keys()
: Возвращает список всех ключей в словаре.values()
: Возвращает список всех значений в словаре.items()
: Возвращает список кортежей (ключ, значение) в словаре.keys_list = student.keys() values_list = student.values() items_list = student.items()
- Метод
pop()
:- Метод
pop(key)
удаляет элемент с указанным ключом и возвращает его значение.age = student.pop('возраст') # Теперь словарь выглядит так: {'имя': 'Иван'} # Вывод: 21
- Метод
Задания на тренировку операций со словарями
Задание 6. Простая манипуляция со значениями. Создайте словарь с информацией о книге (название, автор, год издания). Измените год издания, увеличив его на 5 лет.
Задание 7. Удаление элемента с проверкой. У вас есть словарь с результатами экзаменов студентов. Удалите оценку одного из предметов, но сначала проверьте, существует ли такой предмет.
Задание 8. Создание словаря из двух списков. У вас есть два списка: один с названиями товаров, другой с их ценами. Создайте словарь, используя товары в качестве ключей и цены в качестве значений.
Задание 9. Сортировка словаря. Создайте словарь с несколькими парами «ключ-значение». Отсортируйте словарь по ключам в алфавитном порядке и выведите отсортированные пары.
Задание 10. Анализ текста с использованием словаря. У вас есть текст. Создайте словарь, где ключи — слова, а значения — количество раз, которое каждое слово встречается в тексте.
# Задание 6
book_info = {'название': 'Война и мир', 'автор': 'Л. Толстой', 'год_издания': 1869}
book_info['год_издания'] += 5
# Вывод: {'название': 'Война и мир', 'автор': 'Л. Толстой', 'год_издания': 1874}
# Задание 7
exam_results = {'математика': 90, 'физика': 85, 'химия': 78}
subject_to_remove = 'физика'
if subject_to_remove in exam_results:
del exam_results[subject_to_remove]
# Вывод: {'математика': 90, 'химия': 78}
# Задание 8
products = ['яблоко', 'банан', 'апельсин']
prices = [2, 1, 3]
price_dict = dict(zip(products, prices))
# Вывод: {'яблоко': 2, 'банан': 1, 'апельсин': 3}
# Задание 9
unsorted_dict = {'b': 3, 'a': 1, 'c': 2}
sorted_dict = dict(sorted(unsorted_dict.items()))
# Вывод: {'a': 1, 'b': 3, 'c': 2}
# Задание 10
text = "Python - это язык программирования. Python очень популярен."
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
# Вывод: {'Python': 2, '-': 1, 'это': 1, 'язык': 1, 'программирования.': 1, 'очень': 1, 'популярен.': 1}
Перебор элементов словаря
В Python для перебора элементов словаря в цикле часто используется цикл for
. Есть несколько способов обхода словаря:
- Перебор ключей:
- При переборе ключей можно использовать метод
keys()
.student = {'имя': 'Иван', 'возраст': 20, 'курс': 2} for key in student.keys(): print(key)
- При переборе ключей можно использовать метод
- Перебор значений:
- Используйте метод
values()
для перебора значений.for value in student.values(): print(value)
- Используйте метод
- Перебор пар «ключ-значение»:
- Метод
items()
возвращает кортежи, содержащие пары «ключ-значение».for key, value in student.items(): print(f'{key}: {value}')
- Метод
- Перебор по ключам с использованием цикла
for key in dict
:- Можно перебирать словарь напрямую по его ключам, так как цикл
for
по умолчанию перебирает ключи.for key in student: print(key)
- Можно перебирать словарь напрямую по его ключам, так как цикл
Задания на перебор словаря
Задание 11. Простой перебор значений. Создайте словарь с оценками студента по разным предметам. Выведите все оценки студента.
Задание 12. Перебор пар «ключ-значение» с условием. У вас есть словарь с возрастом людей. Выведите только тех, кто старше 25 лет.
Задание 13. Сложный перебор. Создайте словарь, представляющий результаты спортивных команд в нескольких матчах. Выведите среднее количество забитых голов для каждой команды.
Задание 14. Перебор сложных структур. Создайте словарь с информацией о студентах, включая списки предметов, которые они изучают. Выведите все предметы, которые изучают все студенты.
Задание 15. Перебор с использованием функции. Создайте словарь с товарами и их ценами. Напишите функцию, которая увеличит цены на все товары на 10%, а затем выведите обновленные цены.
# Задание 11
grades = {'математика': 90, 'физика': 85, 'химия': 78}
for grade in grades.values():
print(grade)
# Вывод: 90, 85, 78
# Задание 12
ages = {'Анна': 30, 'Иван': 25, 'Мария': 28}
for name, age in ages.items():
if age > 25:
print(f'{name} - {age} лет')
# Вывод: Анна - 30 лет, Мария - 28 лет
# Задание 13
sports_results = {'Команда1': [2, 3, 1], 'Команда2': [4, 2, 0]}
for team, goals in sports_results.items():
average_goals = sum(goals) / len(goals)
print(f'{team}: Среднее количество забитых голов - {average_goals}')
# Вывод: Команда1: Среднее количество забитых голов - 2.0
# Команда2: Среднее количество забитых голов - 2.0
# Задание 14
students_info = {
'Студент1': {'предметы': ['математика', 'физика'], 'возраст': 20},
'Студент2': {'предметы': ['физика', 'химия'], 'возраст': 22}
}
all_subjects = set()
for student_data in students_info.values():
all_subjects.update(student_data['предметы'])
print('Предметы, которые изучают все студенты:', all_subjects)
# Вывод: Предметы, которые изучают все студенты: {'математика', 'физика', 'химия'}
# Задание 15
prices = {'яблоко': 2, 'банан': 1, 'апельсин': 3}
def increase_prices(dictionary, percentage):
for key in dictionary:
dictionary[key] *= (1 + percentage / 100)
increase_prices(prices, 10)
print('Обновленные цены:', prices)
# Вывод: Обновленные цены: {'яблоко': 2.2, 'банан': 1.1, 'апельсин': 3.3}
Отличия словарей от других структур данных
Словари в Python отличаются от других структур данных, таких как списки, кортежи и множества, в нескольких ключевых аспектах:
- Неупорядоченность:
- Словари являются неупорядоченными коллекциями данных, что означает, что порядок элементов в словаре не гарантирован. В списке порядок элементов важен, а в словаре доступ к значениям осуществляется по ключам.
- Использование ключей:
- В отличие от списков, которые индексируются целыми числами, словари используют ключи для доступа к своим значениям. Это позволяет эффективно организовывать и поисково обрабатывать данные.
- Изменяемость:
- Словари являются изменяемыми структурами данных, что означает, что их содержимое можно изменять после создания. Например, вы можете добавлять, изменять и удалять элементы в словаре.
- Уникальность ключей:
- Ключи в словаре должны быть уникальными. Это означает, что в одном словаре не может быть двух одинаковых ключей. Если вы добавляете значение с уже существующим ключом, оно просто перезаписывает предыдущее значение.
- Использование различных типов ключей:
- В словарях в качестве ключей могут использоваться различные типы данных, такие как строки, числа, кортежи, но неизменяемые. В списках, например, ключами могут быть только целые числа.
- Поддержка различных типов значений:
- Значения в словаре могут быть любого типа данных, включая числа, строки, списки, кортежи, другие словари и т.д.
Пример использования словаря:
student = {'имя': 'Иван', 'возраст': 20, 'оценки': [90, 85, 78]}
В данном примере 'имя'
, 'возраст'
и 'оценки'
— это ключи, а 'Иван'
, 20
и [90, 85, 78]
— соответствующие значения. Это позволяет легко организовывать и манипулировать данными в программе.
Методы словарей
clear()
— очистка словаря:- Метод
clear()
удаляет все элементы из словаря.my_dict = {'a': 1, 'b': 2, 'c': 3} my_dict.clear() # Теперь my_dict равен {}
- Метод
copy()
— копирование словаря:- Метод
copy()
создает поверхностную копию словаря.original_dict = {'a': 1, 'b': 2, 'c': 3} copied_dict = original_dict.copy()
- Метод
get(key, default=None)
— получение значения по ключу:- Метод
get()
возвращает значение для указанного ключа, если ключ существует, иначе возвращает значение по умолчанию (по умолчаниюNone
).value = my_dict.get('a', 'Ключ не существует') # Вывод: 1
- Метод
items()
— получение пар «ключ-значение»:- Метод
items()
возвращает представление всех пар «ключ-значение» в словаре.key_value_pairs = my_dict.items() # Вывод: dict_items([('a', 1), ('b', 2), ('c', 3)])
- Метод
keys()
— получение ключей:- Метод
keys()
возвращает представление всех ключей в словаре.keys = my_dict.keys() # Вывод: dict_keys(['a', 'b', 'c'])
- Метод
values()
— получение значений:- Метод
values()
возвращает представление всех значений в словаре.values = my_dict.values() # Вывод: dict_values([1, 2, 3])
- Метод
pop(key, default=None)
— удаление элемента по ключу и возврат значения:- Метод
pop()
удаляет элемент по ключу и возвращает его значение. Если ключ не существует, возвращает значение по умолчанию (по умолчаниюNone
).removed_value = my_dict.pop('a', 'Ключ не существует') # Вывод: 1
- Метод
popitem()
— удаление и возврат последней пары «ключ-значение»:- Метод
popitem()
удаляет и возвращает последнюю добавленную пару «ключ-значение».last_pair = my_dict.popitem() # Вывод: ('c', 3)
- Метод
setdefault(key, default=None)
— получение значения по ключу или добавление нового:- Метод
setdefault()
возвращает значение по ключу, если ключ существует, иначе добавляет новый ключ со значением по умолчанию.value = my_dict.setdefault('d', 4) # Вывод: 4
- Метод
update(iterable)
— обновление словаря:- Метод
update()
обновляет словарь, добавляя элементы из другого словаря или итерабельного объекта.new_data = {'e': 5, 'f': 6} my_dict.update(new_data) # Теперь my_dict содержит {'a': 1, 'b': 2, 'c': 3, 'e': 5, 'f': 6}
- Метод
fromkeys(keys, value=None)
— создание словаря из ключей и значения:- Метод
fromkeys()
создает новый словарь с указанными ключами и значениями.keys = ['a', 'b', 'c'] new_dict = dict.fromkeys(keys, 0) # Вывод: {'a': 0, 'b': 0, 'c': 0}
- Метод
popitem()
— удаление и возврат последней пары «ключ-значение»:- Метод
popitem()
удаляет и возвращает последнюю добавленную пару «ключ-значение».last_pair = my_dict.popitem() # Вывод: ('c', 3)
- Метод
Задания на использование методов словарей.
Задание 16. Простое обновление и вывод. Создайте словарь с данными о количестве книг разных жанров. Добавьте новые данные о количестве книг другого жанра и выведите обновленный словарь.
Задание 17. Удаление элемента с проверкой. Создайте словарь с данными о количестве яблок и груш. Удалите информацию о грушах, предварительно проверив ее наличие.
Задание 18. Создание копии и изменение оригинала. Создайте словарь с информацией о продуктах и их ценах. Сделайте копию словаря, затем изменив цены в копии, выведите оба словаря.
Задание 19. Использование
setdefault() .
Создайте словарь с данными о студентах и их оценках. Используйтеsetdefault()
для добавления нового студента с оценкой по умолчанию.
Задание 20. Объединение словарей с помощью
update()
. Создайте два словаря с данными о товарах. Объедините их, используя методupdate()
, и выведите результат.
# Задание 16
book_genres = {'фантастика': 20, 'детектив': 15, 'роман': 25}
book_genres['поэзия'] = 10
# Вывод: {'фантастика': 20, 'детектив': 15, 'роман': 25, 'поэзия': 10}
# Задание 17
fruits = {'яблоки': 30, 'груши': 15}
if 'груши' in fruits:
del fruits['груши']
# Вывод: {'яблоки': 30}
# Задание 18
original_prices = {'яблоко': 2, 'банан': 1, 'апельсин': 3}
copied_prices = original_prices.copy()
copied_prices['банан'] = 2.5
# Вывод:
# original_prices: {'яблоко': 2, 'банан': 1, 'апельсин': 3}
# copied_prices: {'яблоко': 2, 'банан': 2.5, 'апельсин': 3}
# Задание 19
students_grades = {'Иван': 90, 'Мария': 85, 'Алексей': 78}
new_student = 'Екатерина'
students_grades.setdefault(new_student, 0)
# Вывод: {'Иван': 90, 'Мария': 85, 'Алексей': 78, 'Екатерина': 0}
# Задание 20
products1 = {'яблоко': 2, 'банан': 1}
products2 = {'апельсин': 3, 'груша': 2}
products1.update(products2)
# Вывод: {'яблоко': 2, 'банан': 1, 'апельсин': 3, 'груша': 2}
Агрегатные функции и сортировка в словарях.
Применение агрегатных функций к словарям:
Агрегатные функции могут быть использованы для обработки значений в словаре, позволяя выполнять различные вычисления на основе этих данных. Рассмотрим несколько примеров:
- Вычисление суммы значений:
- Используя метод
sum()
, можно вычислить сумму всех значений в словаре.prices = {'яблоко': 2, 'банан': 1, 'апельсин': 3} total_price = sum(prices.values()) # Вывод: 6
- Используя метод
- Нахождение среднего значения:
- Среднее значение можно вычислить, разделив сумму значений на их количество.
average_price = total_price / len(prices) # Вывод: 2.0
- Среднее значение можно вычислить, разделив сумму значений на их количество.
- Нахождение минимального и максимального значений:
- Методы
min()
иmax()
позволяют найти минимальное и максимальное значение в словаре.min_price = min(prices.values()) max_price = max(prices.values()) # Вывод: min_price = 1, max_price = 3
- Методы
- Подсчет количества элементов:
- Функция
len()
может быть использована для подсчета количества элементов в словаре (количество ключей).num_items = len(prices) # Вывод: 3
- Функция
- Сортировка словаря по ключам и значениям:
- По ключам:
- Для сортировки словаря по ключам можно использовать функцию
sorted()
.sorted_prices = dict(sorted(prices.items())) # Вывод: {'апельсин': 3, 'банан': 1, 'яблоко': 2}
- Для сортировки словаря по ключам можно использовать функцию
- По значениям:
- Для сортировки словаря по значениям, передайте параметр
key
вsorted()
.sorted_prices_by_value = dict(sorted(prices.items(), key=lambda item: item[1])) # Вывод: {'банан': 1, 'яблоко': 2, 'апельсин': 3}
- Для сортировки словаря по значениям, передайте параметр
- Важно отметить, что словари в Python не поддерживают сортировку в том смысле, что они не сохраняют порядок элементов. Сортировка возвращает новый словарь или список кортежей.
- По ключам:
Задания для тренировки
Задание 21. Вычисление среднего значения. Создайте словарь с оценками студентов по математике. Вычислите и выведите средний балл.
Задание 22. Нахождение минимального значения. Создайте словарь с высотой различных объектов. Найдите и выведите минимальную высоту.
Задание 23. Сортировка по значениям в порядке убывания. Создайте словарь с продажами разных товаров. Отсортируйте его по убыванию и выведите результат.
Задание 24. Средняя длина слов в тексте. Создайте словарь, где ключи — это слова, а значения — их длина. Вычислите и выведите среднюю длину слова.
Задание 25. Сортировка по ключам в алфавитном порядке. Создайте словарь с информацией о разных странах. Отсортируйте его по ключам в алфавитном порядке и выведите результат.
# Задание 21
math_grades = {'Иван': 90, 'Мария': 85, 'Алексей': 78}
average_grade = sum(math_grades.values()) / len(math_grades)
# Вывод: Средний балл: 84.33333333333333
# Задание 22
heights = {'стул': 0.5, 'стол': 0.8, 'шкаф': 2.0}
min_height = min(heights.values())
# Вывод: Минимальная высота: 0.5
# Задание 23
sales = {'яблоко': 100, 'банан': 150, 'апельсин': 120}
sorted_sales = dict(sorted(sales.items(), key=lambda item: item[1], reverse=True))
# Вывод: {'банан': 150, 'апельсин': 120, 'яблоко': 100}
# Задание 24
text = "Python - это мощный язык программирования."
word_lengths = {word: len(word) for word in text.split()}
average_length = sum(word_lengths.values()) / len(word_lengths)
# Вывод: Средняя длина слова: 6.428571428571429
# Задание 25
countries_info = {'Россия': 'Москва', 'США': 'Вашингтон', 'Китай': 'Пекин'}
sorted_countries = dict(sorted(countries_info.items()))
# Вывод: {'Китай': 'Пекин', 'Россия': 'Москва', 'США': 'Вашингтон'}
Практические примеры использования словарей
- Словарь для хранения информации о студентах:
- Вы можете использовать словарь для хранения информации о студентах, включая их имена, оценки по различным предметам и другие данные.
students_data = { 'Иванов': {'математика': 90, 'физика': 85, 'химия': 78}, 'Петров': {'математика': 92, 'физика': 88, 'химия': 76}, 'Сидоров': {'математика': 85, 'физика': 80, 'химия': 92} }
- Вы можете использовать словарь для хранения информации о студентах, включая их имена, оценки по различным предметам и другие данные.
- Словарь для отображения рейтинга фильмов:
- Вы можете использовать словарь для создания рейтинга фильмов, где ключи — это названия фильмов, а значения — рейтинги.
movie_ratings = { 'Звездные войны': 9.0, 'Властелин колец': 8.5, 'Гарри Поттер': 8.2 }
- Вы можете использовать словарь для создания рейтинга фильмов, где ключи — это названия фильмов, а значения — рейтинги.
- Словарь для хранения настроек приложения:
- Используйте словарь для хранения настроек приложения, например, цветовую схему, размер шрифта и другие параметры.
app_settings = { 'цвет_фона': 'синий', 'размер_шрифта': 12, 'тема': 'темная' }
- Используйте словарь для хранения настроек приложения, например, цветовую схему, размер шрифта и другие параметры.
- Словарь для учета товаров на складе:
- Ведите учет товаров на складе, используя словарь, где ключи — это названия товаров, а значения — количество товаров на складе.
inventory = { 'ноутбуки': 50, 'принтеры': 20, 'мониторы': 30 }
- Ведите учет товаров на складе, используя словарь, где ключи — это названия товаров, а значения — количество товаров на складе.
- Словарь для отображения перевода слов:
- Используйте словарь для создания простого словаря, где ключи — это слова на одном языке, а значения — их перевод на другой язык.
translation_dict = { 'hello': 'привет', 'world': 'мир', 'python': 'питон' }
- Используйте словарь для создания простого словаря, где ключи — это слова на одном языке, а значения — их перевод на другой язык.
Практические задания на словари
Задание 26. Подсчет частоты слов в тексте. Напишите программу для подсчета частоты каждого слова в тексте.
Задание 27. Создание меню ресторана. Создайте словарь, представляющий меню ресторана с названиями блюд и их ценами.
Задание 28. Учет расходов. Ведите учет своих расходов за месяц, используя словарь, где ключи — категории расходов, а значения — суммы.
Задание 29. Генератор случайных паролей. Напишите программу, создающую словарь, где ключи — это имена пользователей, а значения — случайно сгенерированные пароли.
Задание 30. Сортировка учеников по средней оценке. Создайте словарь с данными о средних оценках учеников и отсортируйте его по убыванию средних оценок.
Задание 31. Словарь для перевода чисел в текст. Напишите программу, использующую словарь для перевода чисел от 1 до 10 в текст (например, 1 — ‘один’, 2 — ‘два’ и т.д.).
Задание 32. Подсчет символов в тексте. Создайте словарь, где ключи — это символы, а значения — их количество в заданном тексте.
Задание 33. Игра «Крестики-нолики». Реализуйте игру «Крестики-нолики» с использованием словаря для представления игрового поля.
Задание 34. Хранение информации о книгах в библиотеке. Создайте словарь, представляющий библиотеку, где ключи — это названия книг, а значения — информация о каждой книге.
Задание 35. Поиск наиболее часто встречающегося элемента в списке. Напишите функцию, использующую словарь для подсчета частоты встречаемости каждого элемента в списке, и верните наиболее часто встречающийся элемент.
Задание 36. Шифрование текста с использованием замены символов. Напишите программу для шифрования текста с использованием словаря для замены символов.
Задание 37. Симуляция банковского счета. Создайте программу, использующую словарь для представления банковского счета с методами для внесения и снятия средств.
Задание 38. Учет рабочего времени сотрудников. Ведите учет отработанного времени сотрудников, используя словарь с ключами — именами сотрудников и значениями — количеством часов.
Задание 39. Поиск общих элементов в списках. Напишите функцию, использующую словарь для нахождения общих элементов в двух списках.
Задание 40. Анализ результатов опроса. Создайте программу для анализа результатов опроса, используя словарь для подсчета частоты каждого ответа.
# Задание 26
text = "Это пример текста для подсчета частоты слов в тексте. Пример."
word_frequency = {}
for word in text.split():
word_frequency[word] = word_frequency.get(word, 0) + 1
# Вывод: {'Это': 1, 'пример': 2, 'текста': 1, 'для': 1, 'подсчета': 1, 'частоты': 1, 'слов': 1, 'в': 1, 'тексте.': 1, 'Пример.': 1}
# Задание 27
restaurant_menu = {'пицца': 10, 'паста': 8, 'салат': 5}
# (Пример использования меню в коде)
# Задание 28
expenses = {'продукты': 200, 'транспорт': 100, 'развлечения': 150}
# (Пример использования словаря с расходами в коде)
# Задание 29
import random
user_passwords = {user: ''.join(random.choices('abcdef1234567890', k=8)) for user in ['user1', 'user2', 'user3']}
# Вывод: {'user1': 'a3c78bdf', 'user2': '1e4f6a7c', 'user3': 'bd2f8e5a'}
# Задание 30
students_grades = {'Иван': 90, 'Мария': 85, 'Алексей': 78}
sorted_grades = dict(sorted(students_grades.items(), key=lambda item: item[1], reverse=True))
# Вывод: {'Иван': 90, 'Мария': 85, 'Алексей': 78}
# Задание 31
numbers_to_text = {1: 'один', 2: 'два', 3: 'три', 4: 'четыре', 5: 'пять', 6: 'шесть', 7: 'семь', 8: 'восемь', 9: 'девять', 10: 'десять'}
# (Пример использования словаря в коде)
# Задание 32
text = "Пример текста для подсчета символов."
character_counts = {char: text.count(char) for char in set(text)}
# Вывод: {'П': 1, 'о': 2, 'д': 2, 'е': 3, 'л': 1, 'с': 4, 'а': 2, 'м': 1, 'т': 4, 'я': 1, 'б': 1, 'щ': 1, 'и': 2, 'р': 2, 'в': 1, 'пробел': 5, '.': 1}
# Задание 33
# (Пример использования словаря для реализации игры "Крестики-нолики")
# Задание 34
library_books = {'Красная книга': {'автор': 'А. Иванов', 'год': 2005}, 'Зеленая книга': {'автор': 'В. Петров', 'год': 2010}}
# (Пример использования словаря для представления библиотеки в коде)
# Задание 35
def most_common_element(input_list):
element_counts = {element: input_list.count(element) for element in set(input_list)}
return max(element_counts, key=element_counts.get)
# (Пример использования функции для поиска наиболее часто встречающегося элемента в списке)
# Задание 36
def encrypt_text(text):
substitution_dict = {'а': '1', 'б': '2', 'в': '3', 'г': '4', 'д': '5', 'е': '6'}
encrypted_text = ''.join(substitution_dict.get(char, char) for char in text)
return encrypted_text
# (Пример использования функции для шифрования текста)
# Задание 37
class BankAccount:
def __init__(self, initial_balance):
self.balance = initial_balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
return amount
else:
return "Недостаточно средств"
# (Пример использования класса для представления банковского счета в коде)
# Задание 38
work_hours = {'Иван': 40, 'Мария': 35, 'Алексей': 42}
# (Пример использования словаря с часами работы в коде)
# Задание 39
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
common_elements = {element for element in list1 if element in list2}
# Вывод: {3, 4, 5}
# Задание 40
survey_results = {'вопрос1': {'да': 15, 'нет': 5}, 'вопрос2': {'да': 10, 'нет': 10}}
# (Пример использования словаря для анализа результатов опроса)
Задания повышенной сложности
Задание 1: Анализ текста с использованием словарей
Вам дан текст большой статьи. Ваша задача — написать программу на Python, которая анализирует этот текст и выводит следующую информацию:
- Количество уникальных слов в тексте.
- Топ 5 самых часто встречающихся слов и их частота.
- Количество уникальных символов в тексте.
Задание 2: Реализация словаря с поддержкой истории операций
Создайте класс HistoryDict
, который реализует словарь с историей операций. Класс должен иметь следующие методы:
__init__
: конструктор класса.add(key, value)
: добавление элемента в словарь и запись операции в историю.remove(key)
: удаление элемента из словаря и запись операции в историю.get_history()
: получение истории операций в виде списка кортежей (операция, ключ, значение).
Пример использования:
history_dict = HistoryDict()
history_dict.add('a', 1)
history_dict.add('b', 2)
history_dict.remove('a')
print(history_dict.get_history())
# Вывод: [('add', 'a', 1), ('add', 'b', 2), ('remove', 'a', None)]