2017-08-29 23 views
0

我有一個dictRefGenomesDict)其中的密鑰是登錄號(string)和值是基因屬性的二維列表。當我檢查RefGenomesDict地看到,它包含預期的annonymous二維列表使用如何訪問字典中的值的二維列表?

for key in RefGenomesDict.keys(): 
    print(str(key)+ "\t" + str(RefGenomesDict[key])) 

預期的內容打印爲每個鍵。

當我嘗試使用

InfoList = copy.deepcopy(RefGenomesDict[AccNum]) 

列表分配到一個新的變量出現錯誤

TypeError: unhashable type: 'list'. 

我怎樣才能訪問值的二維列表?

+1

'AccNum'是一個列表。那麼,使用一個int,或者其他關鍵字是什麼? –

+0

你能告訴我們你的字典嗎? – MishaVacic

+1

爲什麼要進行雙重查找?你可以在'somedict.items()'中使用'for key'的值(Python 2中的iteritems)。 –

回答

3

Python字典通常不支持可變對象作爲鍵,因爲它們不可哈希。可變類型包括:dictsetlist

In [386]: {[1, 2] : 123} 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-386-3ba6ff881f9f> in <module>() 
----> 1 {[1, 2] : 123} 

TypeError: unhashable type: 'list' 

如果你想通過鍵和得到這個錯誤來訪問字典,你肯定使用無效的關鍵指標。根據錯誤的外觀,AccNum是一個列表。

您應該能值遍歷鍵在一個循環,並分配給InfoList,像這樣:

for key in RefGenomesDict: 
    InfoList = copy.deepcopy(RefGenomesDict[key]) 

這是好的,如果你想更改InfoList你不想在原來的反映。如果不是這種情況,您可能需要刪除deepcopy呼叫。