Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
1

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

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

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

У Васи 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....

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

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

10
1535 / 1090 / 559
Регистрация: 21.03.2016
Сообщений: 3,091
12.12.2019, 20:49 2
так вы переопределяете значение ключа каждый раз получив новое имя
Python
1
word[opis] = name
. но что бы что то добавлять (а потом сортировать) в значение нужно что бы это был список. измените 8 строку на
Python
1
word[opis] = word.get(name,[]) + [name]
0
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
12.12.2019, 20:57  [ТС] 3
Semen-Semenich, даже так он заменяет, а не добавляет
0
1535 / 1090 / 559
Регистрация: 21.03.2016
Сообщений: 3,091
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
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
12.12.2019, 21:09  [ТС] 5
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
print(*sorted(word[aa]))
Semen-Semenich, sorted это из списка в строку?
0
1535 / 1090 / 559
Регистрация: 21.03.2016
Сообщений: 3,091
12.12.2019, 21:18 6
sorted это сортировка а * распаковка списка в строку по умолчанию пробел между элементами списка
0
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
12.12.2019, 21:22  [ТС] 7
Semen-Semenich, сяпки
0
Просто Лис
2960 / 1758 / 695
Регистрация: 17.05.2012
Сообщений: 5,633
Записей в блоге: 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
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
14.01.2020, 08:19  [ТС] 9
Рыжий Лис, почему забавный?
0
Просто Лис
2960 / 1758 / 695
Регистрация: 17.05.2012
Сообщений: 5,633
Записей в блоге: 9
14.01.2020, 08:33 10
Функция делает не то, как она названа. На самом деле она должна вернуть значение из словаря по ключу. И она внезапно возвращает. Но это не всё. Если ключа в словаре нет, она его создаёт и записывает в него дефолтное значение (в данном случае - пустой список). И опять возвращает этот список.
1
9 / 7 / 3
Регистрация: 15.10.2019
Сообщений: 69
14.01.2020, 09:05  [ТС] 11
Хм, прикольно))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2020, 09:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.