我有一个dict(IDMapping),我正在查找它以获得一个值,然后使用它来查找另一个dict(defaultFood)。我有麻烦了。在
我的代码当前如下所示:
homePSDpath = os.curdir
foodName = re.search(r'([a-zA-Z_]+)\\food', homeFoodpath).group(1)
foodName = foodName.decode("utf-8")
myFoodKey = IDMapping.get(foodName)
print defaultFood.get(myFoodKey)
这将导致: TypeError:不可损坏类型:“list”
在使用foodName查找IDMapping之前,我曾尝试将foodName转换为tuple,但结果是FALSE:
^{pr2}$我肯定我在做一些傻事。谢谢大家。在
这是因为IDMapping中的值是列表。不能使用列表作为字典的键(因为它是可变的)。因此,当您试图在
defaultFood.get(myFoodKey)
中使用列表时,它会抛出您看到的错误(Unhashable type:list)。在您需要想出一些方法将myFoodKey从列表转换为字符串、整数或其他不可变类型。在
例如:
将对象列表转换为字符串列表,然后将它们连接在一起,使},可以在字典中用作键。在
[4, 5]
变成{您需要访问列表中的元素:
即
IDMapping.get(foodName) -> [45]
所以[45][0] -> 45
如果您有一个反向映射,我建议将
IDMapping
的值存储为元组、int或string,具体取决于您要对它们做什么,并使defaultFood
的键相同。在相关问题 更多 >
编程相关推荐