在python defaultdict对象(如obj1(中,我可以调用obj1['hello','there']
并获取项。但是当输入列表是可变的(例如:input_list
(时,我如何调用obj1[input_list]
?当我调用obj1[input_list]
时,python会引发以下错误:
TypeError: unhashable type: 'list'
使用obj1[*input_list]
时,python返回:
SyntaxError: invalid syntax
那么,将列表作为变量放入defaultdict的正确方法是什么呢?
错误TypeError: unhashable type: 'list'
表示列表不可哈希,但dict总是需要一个可哈希的键
如果您测试my_normal_dict[2,3]
,您可以看到它实际上将这两个数字视为元组(2,3)
,因为错误为KeyError: (2, 3)
,因此您需要像元组一样输入可散列的可迭代项。
例如,只要元组本身的所有元素都是可散列的,my_dict[tuple(my_list)]
就应该起作用
不过请注意:如果您的列表很大,则可能需要将所有元素复制到元组中。