def voting_borda(rank_ballots):
'''(list of list of str) -> tuple of (str, list of int)
该参数是一个 4 元素列表的列表,代表单次选区的排名投票。
博尔达计数是通过根据排名分配积分来确定的。一方每获得第一名得3分,每名第二名得2分,每名第三名得1分。(排名第四不得分。)例如,上面显示的排名投票将为自由党计数贡献 3 分,为绿色计数贡献 2 分,为 CPC 计数贡献 1 分。得分最多的一方赢得席位。
返回一个元组,其中第一个元素是根据 Borda Count 的获胜方的名称,第二个元素是一个四元素列表,其中包含每一方的总点数。列表元素的顺序对应于 PARTY_INDICES 中各方的顺序。
#>>> voting_borda([['GREEN','NDP', 'LIBERAL', 'CPC'], ['GREEN','CPC','LIBERAL','NDP'],
['LIBERAL','NDP', 'CPC', 'GREEN']])
#('GREEN',[4, 6, 5, 3])
list_of_party_order = []
for sublist in rank_ballots:
for party in sublist[0]:
if party == 'GREEN':
GREEN_COUNT += 3
elif party == 'NDP':
NDP_COUNT += 3
elif party == 'LIBERAL':
LIBERAL_COUNT += 3
elif party == 'CPC':
CPC_COUNT += 3
for party in sublist[1]:
if party == 'GREEN':
GREEN_COUNT += 2
elif party == 'NDP':
NDP_COUNT += 2
elif party == 'LIBERAL':
LIBERAL_COUNT += 2
elif party == 'CPC':
CPC_COUNT += 2
for party in sublist[2]:
if party == 'GREEN':
GREEN_COUNT += 1
elif party == 'NDP':
NDP_COUNT += 1
elif party == 'LIBERAL':
LIBERAL_COUNT += 1
elif party == 'CPC':
CPC_COUNT += 1
我不知道如何更简单地为列表中的每个索引打分。有人可以帮帮我吗?不用太复杂。谢谢!