我正在编写一个函数来根据多数在系统中选择获胜者。如果没有多数,那么我需要删除得票最少的选择并继续进行,直到有多数票的获胜者。例如,
voting({'a':12, 'b':9, 'd':4})
在这种情况下,'a'
有 12 票、'b'
9 票和'd'
4 票。由于'a'
没有多数票(12/25 票),我需要'd'
从可用选择中删除,它将获得多数票(12/21)。每个“选票”中可能有任意数量的选择,重要的是每个选项中的第一个。
我的代码是def voting(votes)
:
d = {}
winning_party = ''
i = 0
for key in votes.keys():
d[key] = votes[key]
while winning_party == '':
for key, vote in d.items():
if d[key] > 0.5 * sum(d.values()):
winning_party = key
return winning_party
else:
if d[key] == min(d.values()):
del d[key]
我尝试进行一些小的更改,但我得到一个错误,即字典在迭代期间改变了大小,或者函数停止工作。
谁能帮我修复代码,或者告诉我如何避免在循环中更改字典?我只能真正使用上面的代码,即我不能导入任何东西或使用除基本功能以外的任何东西。