我有一个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)
我确定我在这里做些傻事。谢谢大家。
答案 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"
,您可以将其用作字典中的键。