如何访问字典中值的二维列表?

时间:2017-08-29 06:41:38

标签: python arrays dictionary

我有一个dictRefGenomesDict),其中的键是登录号(string),值是基因属性的二维列表。当我通过使用

检查RefGenomesDict以确定它确实包含预期的匿名二维列表时
for key in RefGenomesDict.keys():
    print(str(key)+ "\t" + str(RefGenomesDict[key]))

为每个键打印预期的内容。

当我尝试使用

将列表分配给新变量时
InfoList = copy.deepcopy(RefGenomesDict[AccNum])

我收到错误

TypeError: unhashable type: 'list'.

如何访问二维列表中的值?

1 个答案:

答案 0 :(得分:3)

Python字典通常不支持可变对象作为键,因为它们不可清除。可变类型包括dictset list

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来电。