Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
1

Дни рождения! Элементы не добавляются в словарь, а заменяются

12.12.2019, 20:35. Показов 8049. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Элементы не добавляются в словарь, а заменяются!

У Васи N одноклассников. Вася не смог запомнить их дни рождения и решил составить календарь дней рождений класса. По известному списку всех дней рождения научитесь определять, у кого день рождения в заданном месяце.

Формат ввода
В первой строчке записано целое число N (1 ≤ N ≤ 1000) — количество Васиных одноклассников. В следующих N строчках записана информация об их днях рождения. Каждая строчка состоит из трёх частей, разделённых пробелом — имени одноклассника, дня и месяца его рождения. Имя — это строка из русских букв, день — число от 1 до 31, а месяц — строка из набора «янв», «фев», «мар», «апр», «май», «июн», «июл», «авг», «сен», «окт», «ноя», «дек».

Имена всех одноклассников Васи различны.

В следующей строчке записано целое число M (1 ≤ M ≤ 100) — количество вопросов, на которое надо ответить. В следующих M строках содержатся сами вопросы. Вопрос — это название месяца в том же формате, в котором они задаются выше.

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

Если в заданном месяце никто не родился, оставьте соответствующую строку ответа пустой.

Пример
Ввод Вывод
4
Ваня 20 янв
Петя 15 июн
Вася 10 янв
Коля 20 июл
3
июн
дек
янв
Петя

Ваня Вася

моя прога:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n = int(input())
word = {}
for i in range(n):
    s = input()
    opis = s[s.rfind(' '):]
    opis = opis[1:]
    name = s[:s.find(' ')]
    word[opis] = name
m = int(input())
for i in range(m):
    aa = input()
    if aa not in word:
        print()
    else:
        print(word[aa])
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2019, 20:35
Ответы с готовыми решениями:

Заменяются данные в таблице datagridview, но не добавляются
Ввожу данные из form2 через textbox в datagridview которая находитя в form1 и при добавлении данных...

Произвольно заменяются или добавляются буквы в словах
Добрый день! Возможно кто-нибудь знает что может быть за проблема. Сайт сделан на wordpress....

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

Дни рождения
У Васи N одноклассников. Вася не смог запомнить их дни рождения и решил составить календарь дней...

Дни рождения – 2
Вася снова составляет календарь дней рождения своих одноклассников. Теперь, зная месяц, он хочет...

10
4937 / 3290 / 1140
Регистрация: 21.03.2016
Сообщений: 8,071
12.12.2019, 20:49 2
так вы переопределяете значение ключа каждый раз получив новое имя
Python
1
word[opis] = name
. но что бы что то добавлять (а потом сортировать) в значение нужно что бы это был список. измените 8 строку на
Python
1
word[opis] = word.get(name,[]) + [name]
0
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
12.12.2019, 20:57  [ТС] 3
Semen-Semenich, даже так он заменяет, а не добавляет
0
4937 / 3290 / 1140
Регистрация: 21.03.2016
Сообщений: 8,071
12.12.2019, 20:59 4
Лучший ответ Сообщение было отмечено billy121 как решение

Решение

пардон опечатался. вот так
Python
1
word[opis] = word.get(opis,[]) + [name]
Добавлено через 57 секунд
а короче вот. а то у вас путаница. смотрите и вникайте
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n = int(input())
word = {}
 
for i in range(n):
    s = input().split()
    name = s[0]
    opis = s[-1]
    word[opis] = word.get(opis,[]) + [name]
 
m = int(input())
for i in range(m):
    aa = input()
    if aa  in word:
        print(*sorted(word[aa]))
    else:
        print()
1
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
12.12.2019, 21:09  [ТС] 5
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
print(*sorted(word[aa]))
Semen-Semenich, sorted это из списка в строку?
0
4937 / 3290 / 1140
Регистрация: 21.03.2016
Сообщений: 8,071
12.12.2019, 21:18 6
sorted это сортировка а * распаковка списка в строку по умолчанию пробел между элементами списка
0
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
12.12.2019, 21:22  [ТС] 7
Semen-Semenich, сяпки
0
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
14.01.2020, 08:14 8
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
word[opis] = word.get(opis,[]) + [name]
В питоне есть забавный метод setdefault:
Python
1
2
3
4
5
6
7
>>> word = {}
>>> word.setdefault('key', []).append(1)
>>> word
{'key': [1]}
>>> word.setdefault('key', []).append(2)
>>> word
{'key': [1, 2]}
0
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
14.01.2020, 08:19  [ТС] 9
Рыжий Лис, почему забавный?
0
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
14.01.2020, 08:33 10
Функция делает не то, как она названа. На самом деле она должна вернуть значение из словаря по ключу. И она внезапно возвращает. Но это не всё. Если ключа в словаре нет, она его создаёт и записывает в него дефолтное значение (в данном случае - пустой список). И опять возвращает этот список.
1
28 / 23 / 5
Регистрация: 15.10.2019
Сообщений: 261
14.01.2020, 09:05  [ТС] 11
Хм, прикольно))
0
14.01.2020, 09:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2020, 09:05
Помогаю со студенческими работами здесь

Дни рождения
Какова вероятность того что из R людей хотя бы у двух совпадут дни рождения?29февраля не учитывать...

Дни рождения - 2
Вася снова составляет календарь дней рождения своих одноклассников. Теперь, зная месяц, он хочет...

Дни рождения
Написать программу, пердупреждающую о днях рождениях друзей, желательно с подсказками ...

Дни рождения
Здравствуйте, помогите организовать оповещения о днях рождения. БД сделано в access.. как примерно...

Дни рождения
У Васи N одноклассников. Вася не смог запомнить их дни рождения и решил составить календарь дней...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru