我的排序算法存在一些问题
def Rank_Players():
Score_List = []
Sorted_List = []
for x in List_Of_Players:
Score_List.append([x,List_Of_Players[x][1]])
while Score_List:
maximum = Score_List[x]
for x in Score_List:
if Score_List[x][1] > maximum[1]:
maximum = Score_List[x][1]
Sorted_List.append(maximum)
Score_List.remove(maximum)
print (Sorted_List)
首先让我解释它的作用,因为我没有做过任何评论。
First List_Of_Players是一个全局字典,用于保存使用不同过程给出的玩家信息
我的问题是,尽管指向第11行中的整数,但Python认为我正在使用列表进行比较。
TypeError:列表索引必须是整数,而不是列表
为了尝试解决这个问题,我尝试将两个最大刻度更改为
maximum = int(Score_list[x])
感谢您的阅读,这是我第一次尝试使用排序算法,因此必然会出现更多错误,但如果有人能帮助解决TypeError,我会非常感激。
答案 0 :(得分:0)
从这个片段:
List_Of_Players[x][1]
很明显,您的播放器列表是一个列表列表。
从这个片段:
for x in List_Of_Players:
很明显,x因此是一个列表。
所以在这个片段中:
List_Of_Players[x][1]
你正在使用列表作为索引,这是Python解释器所抱怨的。
答案 1 :(得分:0)
在这一行:
for x in Score_List:
x是一个列表(不是可用作列表索引的整数):[y,List_Of_Players[y][1]]
但你这样使用它:if Score_List[x][1]
答案 2 :(得分:0)
这里错的是当你循环遍历列表时,迭代器 - 这里x
- 是值,而不是索引。而不是
for x in Score_List:
if Score_List[x][1] > maximum[1]:
maximum = Score_List[x][1]
你应该做
for x in Score_List:
if x[1] > maximum[1]:
maximum = x[1]