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