不可用类型:' list'

时间:2015-04-26 21:55:02

标签: python

我有一个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'

在尝试使用它来查找IDMapping之前,我尝试将foodName转换为元组,但这导致FALSE:

myFoodKey = tuple(myFoodKey)

我确定我在这里做些傻事。谢谢大家。

2 个答案:

答案 0 :(得分:4)

您需要访问列表中的元素:

print defaultFood.get(myFoodKey[0])

IDMapping.get(foodName) -> [45]所以[45][0] -> 45

如果您有反向映射,我建议将IDMapping的值存储为元组,整数或字符串,具体取决于您要对它们执行的操作,并使defaultFood的键相同。

答案 1 :(得分:0)

这是因为IDMapping中的值是列表。您不能使用列表作为字典的键(因为它是可变的)。因此,当您尝试在defaultFood.get(myFoodKey)中使用列表时,它会抛出您正在查看的错误(不可用类型:列表)。

你需要想出一些方法将myFoodKey从列表转换为字符串或整数或其他一些非可变类型。

例如:

myFoodKey = "".join([str(x) for x in myFoodKey])

会将对象列表转换为字符串列表,然后将它们连接在一起,以便[4, 5]成为"45",您可以将其用作字典中的键。