2017-08-03 66 views
-4

我試圖將'fwd'的第一列中的int值轉換爲新的字典'fragment_dict',但這種類型的錯誤出現在我跑我的代碼時:''int'對象不是可下載的「。我想知道這有什麼問題。將int值轉換爲字典; TypeError:'int'對象不可自訂嗎?

fwd = {1:1, 2:10, 3:100, 5:10000, 103: 103, 204:204, 205:205, 387:387} 


fragment_dic = {} 
count = 0 

for fragment_num in range(0, 388, 1): 
    for pos in range(1,101, 1): 
     if fwd == int: 
      print() 
      genomic_position = fragment_num*100 + pos 
      count += fwd[genomic_position] 
     elif fwd != int: 
      pass 
     fragment_dic[fragment_num] = count 
     count = 0 
     for i in fwd:  
      fwd[fragment_dic] = i[0] 
+3

這段代碼沒有任何意義。 'fwd'是一個字典,它永遠不會是一個整數;即使是這樣,'fwd == int'也不是檢查對象是否是int的方法(你的意思是'isinstance(fwd,int)');只是「通過」的elif完全沒有意義;而實際的錯誤是因爲通過一個字典的迭代給你的鑰匙,所以'我'是關鍵。 –

+0

如果包含完整的錯誤信息,尤其是它向您顯示行'fwd [fragment_dic] = i [0]'的位,它會有所幫助,這意味着我們所要做的就是查看錯誤,看看它是否抱怨你不能下標'i',因爲它是一個'int'。這是你所期望的,因爲它是'fwd'的關鍵之一。 – Duncan

+0

您的錯誤是否帶有堆棧跟蹤?那告訴你問題出在哪裏? – khelwood

回答

0

完整的錯誤是:

Traceback (most recent call last): 
    File "/tmp/t.py", line 18, in <module> 
    fwd[fragment_dic] = i[0] 
TypeError: 'int' object is not subscriptable 

因此,要麼fwd(一個dict)或i(一個其dict的密鑰)是一個int。他們的密鑰fwd確實是int,所以這就是爲什麼你會得到這個錯誤。

+0

謝謝@Duncan提供簡潔的解釋! –

+0

@KangSanKim通過接受鄧肯的回答標記問題已解決請。 – Zcode