[英]Unhashable type: 'list' in dictionary
我編寫了一些代碼來從第二個字典中獲取新值並添加到新字典中。
這是兩個字典:
a = {armani: jeans, dolce: gabbana}
b = {jeans: robo, jobs: versace}
這是代碼: {k:b[v] for k,v in a.items() if v in b}
但是,我收到以下錯誤: unhashable type: 'list'
我理解這可能是因為我的b[v]
值類似於[[20], [30], [35]]
在過去的幾個小時里,我的頭一直發瘋。 我敢肯定這東西很小
它不是那么小。 在繼續您的過程之前,您需要了解一些概念。
字典使您可以使用鍵(例如字符串或整數)而不是索引(例如列表)來訪問其值,對嗎? 好吧,應該有一種機制來實現這一目標,這稱為哈希。
每次將key:value對放入字典中時,都會為該key計算一個哈希值。 對於不可變對象(創建后無法更改的對象,只能重新創建),對於相同的字符串或整數或其他不可變對象,哈希值始終相同,這就是字典使用鍵訪問其值的方式。
另一方面,可變對象不能被散列。 因此不適合用作字典中的鍵。 list
就是其中之一。
如果需要,可以將列表轉換為元組,以將其用作字典中的鍵。
lst = [1, 2, 3]
tup = tuple(lst)
請記住,創建后不能更改元組的元素,例如;
tup[0] = 1
這就是為什么它是不變的。 如果您需要更改其值,則只能將其替換為另一個元組。
注意:如果要求將元組用於哈希(這會使它可變),則元組也不能包含列表作為元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.