2017-08-29 25 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呼叫。