Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 27, 2021 19:14:47

Meacronacer
Зарегистрирован: 2021-07-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со словарем

Вводиться натуральное число(количество строк) потом вводиться строки, как б мне вытащить из всех строк название команд у которых ключ=название команды а значение=список из 5 нулей в отдельный словарь.
Sample Input:
3
Спартак;9;Зенит;10
Локомотив;12;Зенит;3
Спартак;8;Локомотив;15

мне нужен чтоб вот такой словарь вышел:

 d = {
    'Спартак': [0,0,0,0,0],
    'Зенит': [0,0,0,0,0],
    'Локомотив': [0,0,0,0,0]    
}

Офлайн

#2 Авг. 27, 2021 20:44:10

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Работа со словарем

 input_num = int(input('Sample Input: '))
input_sum = []
for i in range(input_num):
    input_sum += input().split(';')[0:-1:2]
end = {i: [0, 0, 0, 0, 0] for i in set(input_sum)}
print(end)

upd просто добовлять к input_sum эээ все же правильней как мне кжатся



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 27, 2021 21:26:42)

Офлайн

#3 Авг. 28, 2021 02:21:13

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1354
Репутация: +  118  -
Профиль   Отправить e-mail  

Работа со словарем

Meacronacer
мне нужен чтоб вот такой словарь вышел:
 matches = []
n = int(input()) # вводим количество игр (сразу переводим из str в int)
for i in range(n):
	matches.append(input().split(';'))# вводим данные,преобразуем в список через разделитель,добавляем в список
res = {} # создаем пустой словарь
for data in matches: # для каждых данных
	if data[0] in res: # если название первой команды в словаре
		res[data[0]][0] += 1 # прибавляем к Всего_игр
	else:# иначе
		res[data[0]] = [1, 0, 0, 0, 0] # создаем список с данными где Всего_игр = 1
	if data[2] in res: # аналогично для второй команды из данных
		res[data[2]][0] += 1
	else:
		res[data[2]] = [1, 0, 0, 0, 0]
	if int(data[1]) > int(data[3]):# если забито первой больше
		res[data[0]][1] += 1 # соответственно прибавлем Побед
		res[data[0]][4] += 3 # очки
		res[data[2]][3] += 1 # у второй прибавляем поражение
	elif int(data[1]) < int(data[3]):# аналогично если забито второй больше
		res[data[2]][1] += 1
		res[data[2]][4] += 3
		res[data[0]][3] += 1
	else:# если ничья
		res[data[2]][2] += 1
		res[data[0]][2] += 1
		res[data[2]][4] += 1
		res[data[0]][4] += 1
for k,v in res.items():# вывод
	print(f'{k}:{v[0]} {v[1]} {v[2]} {v[3]} {v[4]}')

Онлайн

#4 Авг. 28, 2021 08:20:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Работа со словарем

Meacronacer
Вводиться натуральное число(количество строк) потом вводиться строки,
Как всегда возникает вопрос откуда такие данные берутся.

Если вы сами вводите ручками, то просто не вводите ручками лишнего мусора и отделяйте ввод переводом строки. Признаком окончания ввода обычно служит пустая строка.

Если это уже готовые данные в файле, то не морочте всем голову и сразу пишите что данные в файле. А то все лепят протокол ввода с консоли.

С файлом все гораздо проще.

 import re
dat = open("file","r",encoding="....").read()
res = {k:[0]*5  for k in re.findall("[А-я]+",dat,flags=re.M)}



Отредактировано doza_and (Авг. 28, 2021 08:21:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version