Вопрос:
voting_borda:
(список списка str) -> кортеж (str, список int)
Параметр представляет собой список из 4-элементных списков, которые представляют рейтинговые бюллетени для одной поездки.
Количество Борда определяется путем начисления очков в соответствии с рейтингом. Сторона получает 3 балла за каждый рейтинг первого выбора, 2 балла за каждый рейтинг второго выбора и 1 балл за каждый рейтинг третьего выбора. (За четвертое место баллы не присуждаются.) Например, рейтинговое голосование, показанное выше, внесет 3 балла в подсчет либералов, 2 балла в подсчет зеленых и 1 балл в подсчет КПК. Сторона, набравшая наибольшее количество очков, получает место.
Возвратите кортеж, где первый элемент — это имя победившей стороны в соответствии с числом Борда, а второй элемент — это список из четырех элементов, содержащий общее количество очков для каждой стороны. Порядок элементов списка соответствует порядку сторон в PARTY_INDICES.
Это мой код:
def voting_borda(*args):
results = {}
for sublist in args:
for i in range(0, 3):
if sublist[i] in results:
results[sublist[i]] += 3-i
else:
results[sublist[i]] = 3-i
winner = max(results, key=results.get)
results_sort = sorted(results,key=lambda x:x[1],reverse=True)
return winner, results_sort
Однако, если я попытаюсь
voting_borda(['GREEN','NDP', 'LIBERAL', 'CPC'],['GREEN','CPC','LIBERAL','NDP'],['LIBERAL','NDP', 'CPC', 'GREEN'])
Я получил,
('GREEN', {'NDP': 4, 'CPC': 3, 'GREEN': 6, 'LIBERAL': 5})
Но я хочу, чтобы первый параметр был победителем (с этой частью все в порядке), а второй параметр был просто значениями, а также в порядке PARTY_INDICES, который равен PARTY_INDICES = [NDP_INDEX, GREEN_INDEX, LIBERAL_INDEX, CPC_INDEX]
.
любые решения или способы, которыми я мог бы сделать это лучше?