【发布时间】:2019-10-05 14:51:41
【问题描述】:
我的代码 unhashable type: 'list' 中出现此错误
我有一个包含此输入的文本文件:
hokejistov hokej
strelena strela
trener trenuje
我想将单词分成 2 行。第一行将包含第一个单词。第二行将包含第二个单词。然后我需要将单词划分为符号。这部分正在工作,但我需要使用字典 (mapka = {'h':1,'o':2,'k':3, 'e':4, 'j':5, 'i':6, 's':7, 't':8,'v':9,'r':10, 'l':11, 'n':12, 'a':13, 'u':14}) 。
在输出我想得到这个:
first = [[1, 2, 3, 4, 5, 6, 7, 8, 2, 9], [7, 8, 10, 4, 11, 4, 12, 13], [8, 10, 4, 12, 4, 10]]
second = [[1, 2, 3, 4, 5], [7, 8, 10, 4, 11, 13], [8, 10, 4, 12, 14, 5, 4]]
这是我的代码
data = [line.strip() for line in open("mamradhokej.txt",'r')]
mapka = {'h':1,'o':2,'k':3, 'e':4, 'j':5, 'i':6, 's':7, 't':8,'v':9,
'r':10, 'l':11, 'n':12, 'a':13, 'u':14}
first = [[word.lower() for word in text.split()[0]]for text in data]
second = [[word.lower() for word in text.split()[1]]for text in data]
print(first)
print(second)
map(mapka.get, first)
[mapka[k] for k in first] #here i am getting Type error: unhashable type: 'list'.
【问题讨论】:
-
k是一个列表,所以这个错误是有意义的 -
字典键必须是不可变类型以保持字典的健全。如果您需要使用集合作为键,请使用
tuple而不是list。但我不认为这实际上是你想要的。 -
在这里看看我的回答(
list在set中出现同样的错误):stackoverflow.com/a/52805381/1619432 -
first是列表的列表,所以mapka[k]中的k是列表,例如[1, 2, 3, 4, 5, 6, 7, 8, 2, 9],所以mapka[k]不是你想要的,因为没有这个键入mapka。
标签: python