重複の可能性:
出力を少し変更する
質問は:
voting_borda:
(str のリストのリスト) -> (str, int のリスト) のタプル
パラメーターは、1 回の乗馬のランク投票を表す 4 要素リストのリストです。
ボルダカウントは、ランキングに応じてポイントを割り当てて決定されます。パーティーは、第 1 選択のランキングごとに 3 ポイント、第 2 選択のランキングごとに 2 ポイント、第 3 選択のランキングごとに 1 ポイントを獲得します。(4 位にランクされてもポイントは与えられません。) たとえば、上記のランク投票では、リベラル カウントに 3 ポイント、グリーン カウントに 2 ポイント、CPC カウントに 1 ポイントが貢献します。最も多くのポイントを獲得したパーティーが議席を獲得します。
最初の要素が Borda Count に従って勝ったパーティーの名前で、2 番目の要素が各パーティーの合計ポイント数を含む 4 要素のリストであるタプルを返します。リスト要素の順序は、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})
しかし、最初のパラメーターを勝者(その部分は問題ありません)にし、2番目のパラメーターを値だけにして、PARTY_INDICESの順序にする必要があり
PARTY_INDICES = [NDP_INDEX, GREEN_INDEX, LIBERAL_INDEX, CPC_INDEX]
ます。
これを改善できる解決策や方法はありますか?