在下面的代碼中,爲什麼我的代碼不能正確迭代?我可能錯過了一行,但我不明白爲什麼它不起作用。重申列表和字典
我有下面的測試案例的功能:
>>> borda([['A', 'B', 'C', 'D'], ['B', 'A', 'C', 'D'], ['B', 'C', 'D', 'A']])
('B', [5, 8, 4, 1])
凡在參數列表的排名,每個#1個等級的得3分,#2得到2分,#3變1分,沒有其他的隊伍能夠得到任可能不一定有四個選擇。元組中的第一個元素應該是具有最高點數的選擇,第二個元素是每個選擇得到的點的數量,按字母順序排列。
我沒有完成這個功能,但我試圖得到一個選擇的字典作爲按字母順序排列的鍵和作爲值的排名計數,但輸出結果只是字典參數中最後一個列表的最後一個元素。
L = ['A', 'B', 'C', 'D'] #This is referenced outside the function since it might change
D = {}
i = 0
num = 0
while num < len(L):
num += 1
for choice in L:
while i < len(parameter):
for item in parameter:
if item[0] == choice:
D[choice] = D.get(choice, 0) + 3
if item[1] == choice:
D[choice] = D.get(choice, 0) + 2
if item[2] == choice:
D[choice] = D.get(choice, 0) + 1
i += 1
return D
您可以提供您輸入的輸入樣本輸出嗎?我真的不明白你想讓你的功能做什麼。你想獲得一本字典,或者你想獲得一個元組嗎? – BrenBarn
你有4個嵌套循環。那感覺不對,是嗎? @ jdotjot的解決方案對我來說很好,它只使用一個循環。 – jimhark
@jimhark謝謝。公平地說,我也有一個列表理解。 – jdotjdot