所以我使用的是一个字典,其中键是一组两个整数,每个键的值是一个整数,定义如下:
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'
我无法弄清楚为什么会这样,因为我使用的是元组,而不是列表。此外,错误仅在尝试按键获取值时发生,而不是在定义值时发生。有什么想法吗?
答案 0 :(得分:4)
以下是您引用的代码中的一些行:
lines[m] = [c]
这会将包含您的浮动c
的列表分配给lines[m]
c = lines[m]
这会将该列表分配给c
。这两个步骤就像
c = [ c ]
现在,在
i = lineIndices.get((m,c))
部分密钥现在是单元素列表。但列表不可用,因此错误。
据推测,第一项任务应该是
lines[m] = c