2016-11-25 10 views
1

私は辞書内の2つのキーの共通の値を見つけようとしており、それをセットとして返すようにしています。しかし、リストを(コードの最後の行にあるように)セットに戻したいときは、エラー"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

リストのアイテムの1つは、ハッシュ可能ではないタイプです(たとえば、 'list'、' dict')。どちらを見つけるには 'print(x)'を使ってください。 –

答えて

0

私はあなたのコードが実際に行うことになっているかわからないのですが、私の理解があることである:

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

だから、何でも何があるかどうかの値がKEY1とKEY2、または空のリストに格納されていません辞書の適切なキー。

その後、あなたは共通の要素aとbを見つけたい、そうのようなもの:

return set(a) & set(b) 

は、あなたの質問に答える、私はあなたが投稿したコードに問題があると思いますが、引数をあなたとしません。関数に渡します。

関連する問題