Найти в Дзене
programmer's notes (python and more)

Основы программирования на языке Python. Приложение 1 к уроку 22. Словари (задачи)

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Второе дополнение к уроку 22

Словари в языке программирования Python (несколько задач)

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

Задача 1.

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

Рассмотрим решение

primer52.py, текст см. ниже
primer52.py, текст см. ниже
primer52.py

1. Внешний цикл - перебор, вводимых со стандартного устройства, строк.

2. Каждая строка разбивается на слова (split())

3. if t in st - проверка, нет ли слова в словаре. Слова, т.о. является ключом в словаре. А вот значением ключа - сколько раз слово встретилось в тексте.

4. sorted() возвращает отсортированный список ключей словаря!

На входе

3
and the students were hooked
cause the job was well cooked
and thank Mike for the book

На выходе
Mike : 1
and : 2
book : 1
cause : 1
cooked : 1
for : 1
hooked : 1
job : 1
students : 1
thank : 1
the : 3
was : 1
well : 1
were : 1

Задача 2.

Дан список пар русских и английских слов. Каждая пара в своей строке? В начале идет русское слово, потом его перевод - английское слово. При чем: 1. Пары могут повторяться. 2. Для разных русских слов переводом может служить одно английское слово. 3. В первой строке стоит число пар слов. Нужно получить англо-русский словарь. Одному английскому слову, могут при этом соответствовать несколько русских.

Решение

primer53.py, текст внизу
primer53.py, текст внизу
primer53.py

Пояснение к решению.

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

Важно, что при добавлении нужно использовать операцию над множествами:
dt[ls[1]] = dt[ls[1]] | {ls[0]}
добавляем русское слово в список переводов для данного английского слова.

Задача 3.

Дан словарик, поменять местами ключ и значение.

Ниже представлено решение.

primer54.py, текст ниже
primer54.py, текст ниже
primer54.py

Основная проблема здесь заключается в том, что ключи в словаре уникально, то значения словарей могут повторяться. Следовательно, после обращения, для одного ключа, могут быть несколько значений. Но проблем здесь нет. Просто возьмем в качестве значения список.

Результат выполнения программы

{1: ['qw', 'rt', 'op'], 3: ['er'], 4: ['we', 'yu']}

Задача 4.

Для каждой страны указываются города. Затем идет список городов, нужно вывести список стран, соответствующих каждому городу. Структура входных данных: в начале идет число строк со странами и городами. В каждой строке страна и через пробелы города. Затем идет число - количество строк со странами. Выходные данные: список стран, по стране в каждой строке.

Например.
На входе
3
Россия Москва Челябинск Казань
Китай Пекин, Шанхай
Индия Бомбей Дели
5
Бомбей
Челябинск
Москва
Шанхай
Лондон

На выходе
Индия
Россия
Россия
Китай
-

Решение

primer55.py, текст ниже
primer55.py, текст ниже
primer55.py

Задача не сложная. Надо просто понять, что ключом в словаре должен быть город: dc[ls[j]] = ls[0], а значением - страна. Конечно, есть и НО. Есть города в разных странах с одинаковым названием. Решать можно по-разному. Например ставить в соответствие городу список стран. Попробуйте реализовать этот подход.

Ну пока все, тема "Словари" закончена. Начинаем новую.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Родился программистом? Не валяй дурака, а программируй.
Родился программистом? Не валяй дурака, а программируй.