2015-07-11 47 views
0

的,我有一些問題,我的排序algorithimPython的調用錯誤的類型類型的變量

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) 

首先讓我來解釋一下它,因爲我已經沒有做任何評論。

首先List_Of_Players是,使用不同的程序

  1. 創建兩個陣列,然後追加字典參考編號 並有總指向Score_List格式爲[X,點保持給定玩家的信息的全局字典]
  2. 雖然Score_List具有值它將經過列表檢查 它們是否與點
  3. 最大附加到Sorted_List並從所述Score_List取出並打印到s的大量的陣列creen(現在看看它是否有效)

我的問題是,儘管在第11行指向一個整數,Python相信我比較使用列表。

TypeError: list indices must be integers, not list

爲了試圖解決這個問題,我已經嘗試改變兩個最大declerations到

maximum = int(Score_list[x]) 

謝謝您的閱讀,這是我第一次嘗試使用排序algorithim所以那裏有必然是更多的錯誤,但如果有人可以幫助TypeError我會非常感謝。

+0

請解決您的壓痕,並添加你的輸入和預期的輸出。什麼是List_of_Players' – IanAuld

+3

'Score_List.append([x,List_Of_Players [x] [1]])'將列表元素添加到列表中,您可以通過'Score_List'中的for x訪問列表元素。所以'x'確實是一個不是整數的列表。 – runDOSrun

+1

也在while循環中:'maximum = Score_List [x]',這裏的'x'是什麼,你沒有定義它。 – Jkm

回答

0

從這個片段:

List_Of_Players[x][1] 

可以清楚地看到您的播放列表是列表的列表。

從這個片段:

for x in List_Of_Players: 

它變得清晰,x是因此列表。

因此,在這個片段:

List_Of_Players[x][1] 

你使用列表作爲一個指標,這是Python解釋器抱怨。

+0

感謝您打破心靈氣焰,真正幫助我理解並澄清了一個錯誤概念。 – Thundershocked

0

在這一行:

for x in Score_List: 

x是一個列表(不可用作列表索引整數):[y,List_Of_Players[y][1]] 但是你用這樣的:if Score_List[x][1]

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] 
+0

感謝您提供工作代碼並清楚地解釋問題。 – Thundershocked