Найти - Пользователи
Полная версия: Работа со словарем
Начало » Python для новичков » Работа со словарем
1
Meacronacer
Вводиться натуральное число(количество строк) потом вводиться строки, как б мне вытащить из всех строк название команд у которых ключ=название команды а значение=список из 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]    
}
AD0DE412
 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 эээ все же правильней как мне кжатся
xam1816
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]}')
doza_and
Meacronacer
Вводиться натуральное число(количество строк) потом вводиться строки,
Как всегда возникает вопрос откуда такие данные берутся.

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

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

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

 import re
dat = open("file","r",encoding="....").read()
res = {k:[0]*5  for k in re.findall("[А-я]+",dat,flags=re.M)}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB