我真的需要帮助
def get_winner (dict_winner):
new_dict = {}
for winner in dict_winner:
first_letter = winner[0]
value = dict_winner[winner]
if first_letter in new_dict:
new_dict[first_letter] += value
else:
new_dict[first_letter] = value
return (new_dict)
get_winner({
('C', 'A', 'B', 'D') :3,
('D', 'B', 'C', 'A') :2,
('C', 'D', 'A', 'B') :1,
('A', 'D', 'B', 'C') :2,
('A', 'D', 'C', 'B') :4,
('A', 'C', 'D', 'B') :2
})
#Outputs {'A': 8, 'D': 2, 'C': 4}
现在我希望结果是 str 的元组,NoneType..
此外,它只消除一次仅排在第一位的最小值的字母。我希望它重复这个过程,直到我最终得到一个赢家。所以在这种情况下,所有 B 都将在 dict 本身中被消除,而不是在输出中。例如:
first time = [8, 0, 4, 2]
second time = {
('C', 'A', 'D') :3,
('D', 'C', 'A') :2,
('C', 'D', 'A') :1,
('A', 'D', 'C') :2,
('A', 'D', 'C') :4,
('A', 'C', 'D') :2
})
#Outputs C = 4 D = 2 A = 8
third time= {
('C', 'A') :3,
('C', 'A') :2,
('C', 'A') :1,
('A', 'C') :2,
('A', 'C') :4,
('A', 'C') :2
})
#Outputs C = 6 A = 8
8/ 14 > 50%,我知道从一开始就应该是这样,因为A
已经有了多数值。但我假设A
它的值为 40%,这是消除应该开始的时候。那么,你能指出我在编码时出错的地方吗?在例子A
中应该是赢家!所以输出应该是 ('A', None)