Найти - Пользователи
Полная версия: Операции со словарями
Начало » Python для новичков » Операции со словарями
1 2
halo
Приветствую!
Пока не придумал как сделать лучше.
Есть запрос ввода, который помещен в цикл while.
каждая итерация добавляет в словарь ключ и его значение.
Как сделать, чтобы цифровые значения ключей складывались, если встречаются одинаковые ключи?
FishHook
halo
Как сделать, чтобы цифровые значения ключей складывались, если встречаются одинаковые ключи?

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

или используем метод словаря set_default (но вам наверное пока рановато)
halo
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 во вторую?

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


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

За победу команде начисляется 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

Я пока хочу сложись все результаты каждой команды
halo
Хотя, я сейчас вчитался и понял, что начал не с того ))
FishHook
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
halo
Дело в том, что по опыту, команд может быть 100…
Тогда такая конструкция не подойдет.
Надо ввод разбить на множества и поместить внутрь списка?
Я правильно понял?
FishHook
подумайте еще раз
halo
Перепутал, не множества, кортежи.
Но, все равно, не понятно, почему взято так.
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