Python词典:使用Tuple作为键,获取错误' unhashale类型:list'

时间:2014-09-13 21:21:14

标签: python dictionary key tuples

所以我使用的是一个字典,其中键是一组两个整数,每个键的值是一个整数,定义如下:

for line in f:
    l = line.split(':')
    m = float(l[0])
    c = float(l[1])
    lines[m] = [c]
    lineIndices[(m,c)] = i
    i += 1

所以,m和c是关键元组,我是元组的值。

当我尝试检索' i'通过使用m& c,我收到错误。

def getIndex(m):
    c = lines[m]
    i = lineIndices.get((m,c))

错误:

TypeError: unhashable type: 'list'

我无法弄清楚为什么会这样,因为我使用的是元组,而不是列表。此外,错误仅在尝试按键获取值时发生,而不是在定义值时发生。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

以下是您引用的代码中的一些行:

lines[m] = [c]

这会将包含您的浮动c的列表分配给lines[m]

c = lines[m]

这会将该列表分配给c。这两个步骤就像

c = [ c ]

现在,在

i = lineIndices.get((m,c))

部分密钥现在是单元素列表。但列表不可用,因此错误。

据推测,第一项任务应该是

lines[m] = c