2016-11-25 34 views
1

我試圖找到字典中兩個鍵的常見值,並將它作爲一個集合返回。但是當我想要將列表更改回一組時(如我的代碼的最後一行所示),它會生成錯誤"Unhashable type"。我意識到這個錯誤的含義,但不幸的是我不知道如何解決這個問題。不可設置的類型:'set'錯誤

def values_in_common(dict, key1, key2): 
a = [] 
b = [] 
for i, e in dict.items(): 
    if i == key1: 
     a.append(e) 
    if i == key2: 
     b.append(e) 
x = [] 
for i in a: 
    if i in b: 
     x.append(i) 
return set(x) 
+2

列表中的一項是不可散列的類型(例如'list','dict')。使用'print(x)'找出哪個。 –

回答

0

我不知道你的代碼實際上是應該做的,但我的理解是:

a = dict.get(key1) or [] 
b = dict.get(key2) or [] 

所以,無論值存儲在鍵1和鍵2,或空列表,如果沒有字典中適當的關鍵字。

然後,你想找到一個共同的元素和b,所以像:

return set(a) & set(b) 

回答你的問題,我不認爲有一個與您發佈的代碼中的問題,但與論據你傳遞給函數。

相關問題