Skip to main content
 首页 » 编程设计

python之尝试制作列表字典时如何修复错误 "unhashable type: ' list'"

2025年05月04日15daizhj

我正在尝试制作列表字典。我使用的输入看起来像这样:

4 
1: 25 
2: 20 25 28 
3: 27 32 37 
4: 22 

其中 4 是将以该格式输出的行数。我做的第一件事是删除“#:”格式并简单地保留每一行,如下所示:

['25'] 
['20','25','28'] 
['27','32','37'] 
['22'] 

所以最终的目标是获取这些值并将它们放入字典中,字典中为它们指定的值是它们包含的数字的长度。

所以我希望字典看起来像这样:

['25'] : 1 
['20','25','28'] : 3 
['27','32','37'] : 3 
['22'] : 1 

但是,当我尝试编写程序时,出现错误:

TypeError: unhashable type: 'list' 

这是我的代码:

def findPairs(people): 
    pairs = {} 
    for person in range(people): 
        data = raw_input() 
 
        #Remove the "#: " in each line and format numbers into ['1','2','3'] 
        data = (data[len(str(person))+2:]).split() 
        options = len(data) 
 
        pairs.update({data:options}) 
 
    print(pairs) 
findPairs(input()) 

有谁知道我该如何解决这个问题并创建我的字典?

请您参考如下方法:

列表是可变的,因此无法进行哈希处理(如果列表在用作键后发生更改会怎样)?

使用tuples这是immutable相反:

d = dict() 
lst = [1,2,3] 
d[tuple(lst)] = "some value" 
print d[tuple(lst)] # prints "some value"