問題是:改變輸出比特
voting_borda:
(STR的列表的列表) - >的(STR,INT的列表)元組
的參數是的4元素列表的列表代表單次騎行的等級選票。
Borda Count是根據排名分配點數來確定的。一方獲得每個第一選擇排名3分,每個第二選擇排名2分,每個第三選擇排名1分。 (沒有積分排名第四。)例如,上面顯示的排名投票將貢獻3分給通精計數,2分給綠色計數和1分到CPC計數。得分最多的一方贏得了席位。
返回一個元組,其中第一個元素是根據博爾達計數和第二個元素是一個包含每個方點總數的四元素列表中獲勝的一方的名字。列表元素的順序對應於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]
。
任何解決方案或方法,我可以做得更好?
要麼這是功課或[這傢伙(http://stackoverflow.com/questions/13546205/how-to-shorten-this-code-without-using-一堆的if語句/)擊敗你。 – engineerC
很多人在同一班。 http://stackoverflow.com/questions/13505169/how-to-append-the-number-of-item-frequencies-in-a-list-in-python-3-2/13505225#13505225 – sberry
我做到了那一個已經!但這個問題是從一個 – user1864828