首页 > 解决方案 > 如何在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的正确方法是什么?

标签: python-3.xdefaultdict

解决方案


错误TypeError: unhashable type: 'list'表明 list 不可散列,但 dict 始终需要可散列键!
如果您测试my_normal_dict[2,3]您可以看到它实际上将这两个数字视为元组(2,3),因为错误是KeyError: (2, 3),因此您需要像元组一样输入一个可哈希的迭代。

例如,my_dict[tuple(my_list)]只要元组本身的所有元素都是可散列的,就应该工作!
但请注意:如果您的列表很大,则可能需要将所有元素复制到一个元组中。


推荐阅读