python-3.x - 如何在python defaultdict调用中放入变量
问题描述
在 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'
表明 list 不可散列,但 dict 始终需要可散列键!
如果您测试my_normal_dict[2,3]
您可以看到它实际上将这两个数字视为元组(2,3)
,因为错误是KeyError: (2, 3)
,因此您需要像元组一样输入一个可哈希的迭代。
例如,my_dict[tuple(my_list)]
只要元组本身的所有元素都是可散列的,就应该工作!
但请注意:如果您的列表很大,则可能需要将所有元素复制到一个元组中。
推荐阅读
- regex - $() 从字符串中删除
- ubuntu - 如何在 ubuntu 上安排程序终止
- angular - Angular:Formbuilder中的验证器字母数字或空格
- python - 准确度指标计算是否从 TensorFlow 1.14 更改为 TensorFlow 2.3?
- javascript - 元素被状态值覆盖
- flutter - 如果包含 endDrawer,Flutter 2.0 appbar 后退按钮会消失
- laravel - Laravel:如何为自定义类函数创建 routes/console.php 条目?
- python-3.x - 有没有办法从 Dagster failure_hook 和 success_hook 获取回溯堆栈?
- python - 如何将 PEP 517 和 PEP 518 用于本地可用(不在 PYPI 上)、系统范围的 CLI Python 脚本
- c++ - 为什么我班的这个功能不起作用?