Python 当我尝试创建列表字典时,如何修复错误“unhable type:'list'”?

Python 当我尝试创建列表字典时,如何修复错误“unhable type:'list'”?,python,dictionary,Python,Dictionary,我想编一本清单词典。我使用的输入如下所示: 4 1: 25 2: 20 25 28 3: 27 32 37 4: 22 ['25'] : 1 ['20','25','28'] : 3 ['27','32','37'] : 3 ['22'] : 1 其中4是将以该格式输出的行数。我做的第一件事是删除:格式,并简单地保持每一行如下: ['25'] ['20','25','28'] ['27','32','37'] ['22'] 最后,我们的目标是将这些值放入字典,字典中的赋值是它们所持有的数字

我想编一本清单词典。我使用的输入如下所示:

4
1: 25
2: 20 25 28
3: 27 32 37
4: 22
['25'] : 1
['20','25','28'] : 3
['27','32','37'] : 3
['22'] : 1
其中4是将以该格式输出的行数。我做的第一件事是删除:格式,并简单地保持每一行如下:

['25']
['20','25','28']
['27','32','37']
['22']
最后,我们的目标是将这些值放入字典,字典中的赋值是它们所持有的数字的长度

所以我想让字典看起来像这样:

4
1: 25
2: 20 25 28
3: 27 32 37
4: 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())

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

列表是可变的,因此不能散列如果列表在用作键后发生更改会发生什么

使用以下选项代替:


列表是可变的,因此不能散列如果列表在用作键后发生更改会发生什么

使用以下选项代替:

列表是不可损坏的类型,在将其用作字典中的键之前,需要将其转换为元组:

>>> lst = [['25'], ['20','25','28'], ['27','32','37'], ['22']]
>>> print dict((tuple(l), len(l)) for l in lst)
{('20', '25', '28'): 3, ('22',): 1, ('25',): 1, ('27', '32', '37'): 3}
列表是不可损坏的类型,在将其用作字典中的键之前,需要将其转换为元组:

>>> lst = [['25'], ['20','25','28'], ['27','32','37'], ['22']]
>>> print dict((tuple(l), len(l)) for l in lst)
{('20', '25', '28'): 3, ('22',): 1, ('25',): 1, ('27', '32', '37'): 3}

将长度存储为值有什么意义?列表的长度检查为O1。不能将列表用作键,可以使用元组将长度存储为值的目的是什么?列表的长度检查为O1。不能将列表用作键,可以使用元组