Доброго времени суток, читатели, зрители моего канала programmer's notes.
Второе дополнение к уроку 22
Словари в языке программирования Python (несколько задач)
Сегодня приложение к видеоуроку по задачам, посвященным словарям.
Задача 1.
На входе программы строки текста. Текст состоит из слов, отделенных друг от друга пробелами. Знаков препинания нет. При вводя в первой строке стоит число вводимых строк. Получить упорядоченный список слов и сколько раз каждое слово встречается в тексте.
Рассмотрим решение
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. В первой строке стоит число пар слов. Нужно получить англо-русский словарь. Одному английскому слову, могут при этом соответствовать несколько русских.
Решение
Пояснение к решению.
Очевидно, что ключом словаря, который мы будем использовать для решения задачи, должны быть английские слова. А вот значением логично было бы взять множество. Тем самым мы сразу решаем проблему дублей.
Важно, что при добавлении нужно использовать операцию над множествами:
dt[ls[1]] = dt[ls[1]] | {ls[0]}
добавляем русское слово в список переводов для данного английского слова.
Задача 3.
Дан словарик, поменять местами ключ и значение.
Ниже представлено решение.
Основная проблема здесь заключается в том, что ключи в словаре уникально, то значения словарей могут повторяться. Следовательно, после обращения, для одного ключа, могут быть несколько значений. Но проблем здесь нет. Просто возьмем в качестве значения список.
Результат выполнения программы
{1: ['qw', 'rt', 'op'], 3: ['er'], 4: ['we', 'yu']}
Задача 4.
Для каждой страны указываются города. Затем идет список городов, нужно вывести список стран, соответствующих каждому городу. Структура входных данных: в начале идет число строк со странами и городами. В каждой строке страна и через пробелы города. Затем идет число - количество строк со странами. Выходные данные: список стран, по стране в каждой строке.
Например.
На входе
3
Россия Москва Челябинск Казань
Китай Пекин, Шанхай
Индия Бомбей Дели
5
Бомбей
Челябинск
Москва
Шанхай
Лондон
На выходе
Индия
Россия
Россия
Китай
-
Решение
Задача не сложная. Надо просто понять, что ключом в словаре должен быть город: dc[ls[j]] = ls[0], а значением - страна. Конечно, есть и НО. Есть города в разных странах с одинаковым названием. Решать можно по-разному. Например ставить в соответствие городу список стран. Попробуйте реализовать этот подход.
Ну пока все, тема "Словари" закончена. Начинаем новую.
Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.