[英]Unhashable Type: 'list'
我要查找一個字典(IDMapping)以獲取一個值,然后用它來查找另一個字典(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,但是結果為FALSE:
myFoodKey = tuple(myFoodKey)
我確定我在這里做些愚蠢的事情。 感謝大家。
您需要訪問列表中的元素:
print defaultFood.get(myFoodKey[0])
即IDMapping.get(foodName) -> [45]
如此[45][0] -> 45
如果您有反向映射,建議您將IDMapping
的值存儲為元組,整數或字符串,具體取決於您要對它們進行什么操作,並使defaultFood
的鍵相同。
這是因為IDMapping中的值是列表。 您不能將列表用作字典的鍵(因為它是可變的)。 因此,當您嘗試在defaultFood.get(myFoodKey)
使用列表時,它會引發您所看到的錯誤(Unhashable類型:list)。
您需要想出一些方法將myFoodKey從列表轉換為字符串或整數或其他一些非可變類型。
例如:
myFoodKey = "".join([str(x) for x in myFoodKey])
會將對象列表轉換為字符串列表,然后將它們連接在一起,使得[4, 5]
變為"45"
,您可以將其用作字典中的鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.