изменение выхода

Возможный дубликат:
Быстрое изменение вывода

Вопрос:

voting_borda: 

(список списка str) -> кортеж (str, список int)

Параметр представляет собой список из 4-элементных списков, которые представляют баллы для голосования для одиночной езды.

Счет Борды определяется путем назначения очков в соответствии с ранжированием. Партия получает 3 очка за каждый рейтинг первого выбора, 2 очка за каждый второй выбор и 1 очко за каждый третий рейтинг. (Нет баллов за занятие четвертого.) Например, показанное выше рейтинговое бюллетень может внести 3 балла в счет Либерала, 2 балла на счет «Зеленый» и 1 балл за счет CPC. Партия, которая получает больше очков, выигрывает место.

Верните кортеж, где первый элемент – имя победившей стороны в соответствии с Borda Count, а второй элемент – это список из четырех элементов, который содержит общее количество очков для каждой стороны. Порядок элементов списка соответствует порядку сторон в 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) return winner, results 

Однако, если я попытаюсь

 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] .

любые решения или способы, которыми я мог бы сделать это лучше?

  • Обновление списка
  • Как преобразовать эту строку в список списков?
  • поместите 0 перед номерами в списке, если они меньше десяти (в python)
  • Вычитание 2 списков в Python
  • Есть ли простой способ удалить элемент списка по значению?
  • Использование python для возврата списка целых чисел
  • Списки разыменования внутри списка в Python
  • Python: удаление пробелов из объектов списка
  • One Solution collect form web for “изменение выхода”

     PARTY_INDICES = ['NDP_INDEX', 'GREEN_INDEX', 'LIBERAL_INDEX', 'CPC_INDEX'] party_dic = {} for i, item in enumerate(PARTY_INDICES): party_dic[item.split('_')[0]] = i print party_dic 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 = [v for k, v in sorted(results.items(), key = lambda x: party_dic[x[0]])] return winner, results print voting_borda(['GREEN','NDP', 'LIBERAL', 'CPC'],['GREEN','CPC','LIBERAL','NDP'],['LIBERAL','NDP', 'CPC', 'GREEN']) {'NDP': 0, 'CPC': 3, 'GREEN': 1, 'LIBERAL': 2} ('GREEN', [4, 6, 5, 3]) 
    Python - лучший язык программирования в мире.