我可能在如何解决这个问题上完全错误,但基本上我需要首先创建一个名称字典,其中包含比赛的空值列表。
contestants = {[("Alice", []),("Dennis", []), ("Bob", []), ("Eva", []), ("Clare", [])]}
我假设这就是我的做法^^
然后我需要能够将值 append 到空列表中,并根据总体得分对位置进行排序。
{'Dennis': [4, 4, 4, 4, 4, 5], 'Alice': [2, 2, 2, 1, 1, 2], 'Bob': [3, 3, 3, 3, 2, 1], 'Eva': [5, 5, 5, 5, 3, 3], 'Clare': [1, 1, 1, 2, 5, 4]}
以上是每位玩家的得分,并已为他们排序。
def seriesscores(racescores):
contestants = {[("Alice", []),("Dennis", []), ("Bob", []), ("Eva", []), ("Clare", [])]}
contestants.append(racescores[1])
return contestants
我目前正在测试上面的代码,它一直显示如下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in seriesscores
TypeError: unhashable type: 'list'
我现在正在寻找的是将分数附加到空列表的方法,我想我可以使用以下代码对其进行排序:
return sorted(contestants, key=lambda x: (sum(x[1])))
我走的路正确吗?
最佳答案
试试这个:
contestants = {"Alice": [], "Dennis": [], "Bob": [], "Eva": [], "Clare": []}
而不是这个:
contestants = {[("Alice", []),("Dennis", []), ("Bob", []), ("Eva", []), ("Clare", [])]}
另外,racescores 参数到底是什么?我想你可能想做这样的事情:
for key, value in enumerate(racescores):
contestants[key] += value
但我猜测,如果 racescores
中没有数据格式,我无法为您提供更多帮助。
关于python - 根据每场比赛的结果追加排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404638/