Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 24, 2021 13:16:49

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями

Приветствую!
Пока не придумал как сделать лучше.
Есть запрос ввода, который помещен в цикл while.
каждая итерация добавляет в словарь ключ и его значение.
Как сделать, чтобы цифровые значения ключей складывались, если встречаются одинаковые ключи?

Офлайн

#2 Июнь 24, 2021 13:38:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Операции со словарями

halo
Как сделать, чтобы цифровые значения ключей складывались, если встречаются одинаковые ключи?

1. Перед тем как добавлять ключ, проверять, что такого ключа нет
2. Если такой ключ уже есть, то вместо добавления ключа изменяем значение по существующему ключу

или используем метод словаря set_default (но вам наверное пока рановато)



Офлайн

#3 Июнь 24, 2021 14:19:04

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями

FishHook
Поясню, чтобы было немного понятнее и, возможно, посоветуете лучший вариант
есть задача, где дается несколько значений
первое значение - цифра
следующие значения - строки (количество строк соответствует введенной цифре)
каждая строка разбивается по “точке с запятой” и помещается в список, а уже из списка берутся значения и добавляются в словарь.
я придумал это )):

Строка подается такого вида: команда;число;команда;число
Т.е. список получается

igr = int(input())
turnir = {}
n = 1

while True:
if n <= igr:
igra = input().split(';')
else:
break

turnir[igra[0]] = igra[1]
turnir[igra[2]] = igra[3]
n += 1
#print(n)

if igra[0] not in turnir:
turnir[igra[0]] = igra[1]
elif igra[2] not in turnir:
turnir[igra[2]] = igra[3]

тут возникает вопрос, как унифицировать ключ (как значения списка 0 и 2 поместить в одну переменную и значения 1 и 3 во вторую?

С проверкой что-то не так, но пока не могу догнать, как сделать правильно

Отредактировано halo (Июнь 24, 2021 14:57:09)

Офлайн

#4 Июнь 24, 2021 14:51:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Операции со словарями

Дайте, пожалуйста, условие задачи так, как оно для вас сформулировано, там наверняка нет ничего про словари



Офлайн

#5 Июнь 24, 2021 14:58:28

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями



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

За победу команде начисляется 3 очка, за поражение — 0, за ничью — 1.

Формат ввода следующий:
В первой строке указано целое число n n n — количество завершенных игр.
После этого идет n n n строк, в которых записаны результаты игры в следующем формате:
Первая_команда;Забито_первой_командой;Вторая_команда;Забито_второй_командой

Вывод программы необходимо оформить следующим образом:
Команда:Всего_игр Побед Ничьих Поражений Всего_очков

Конкретный пример ввода-вывода приведён ниже.

Порядок вывода команд произвольный.

Sample Input:

3
Спартак;9;Зенит;10
Локомотив;12;Зенит;3
Спартак;8;Локомотив;15

Sample Output:

Спартак:2 0 0 2 0
Зенит:2 1 0 1 3
Локомотив:2 2 0 0 6

Я пока хочу сложись все результаты каждой команды

Офлайн

#6 Июнь 24, 2021 15:02:50

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями

Хотя, я сейчас вчитался и понял, что начал не с того ))

Офлайн

#7 Июнь 24, 2021 15:10:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Операции со словарями

halo
Я вам дам подсказку:

    
result = {}
for team_name, points in [('team1', 3),
                          ('team2', 1),
                          ('team3', 0),
                          ('team1', 1),
                          ('team2', 1),
                          ('team3', 1),
                          ('team1', 3),
                          ('team2', 0)]:
    if team_name not in result:
        result[team_name] = {'points': 0, 'wins': 0, 'draws': 0}
    result[team_name]['points'] += points
print result



Офлайн

#8 Июнь 24, 2021 16:08:07

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями

Дело в том, что по опыту, команд может быть 100…
Тогда такая конструкция не подойдет.
Надо ввод разбить на множества и поместить внутрь списка?
Я правильно понял?

Офлайн

#9 Июнь 24, 2021 16:14:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Операции со словарями

подумайте еще раз



Офлайн

#10 Июнь 25, 2021 09:05:59

halo
Зарегистрирован: 2020-05-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Операции со словарями

Перепутал, не множества, кортежи.
Но, все равно, не понятно, почему взято так.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version