actuals と peaks はどちらも整数のリストのリストです。
私のコードでは、次のように、整数のリストから整数のリストのリストへの辞書を作成しようとしました。
mapping={}
for a in actuals:
mapping[a]=[v for v in peaks if v[0]==a[0]]
ただし、エラーが返されました
TypeError: unhashable type: 'list'
何がうまくいかなかったのでしょうか?
actuals と peaks はどちらも整数のリストのリストです。
私のコードでは、次のように、整数のリストから整数のリストのリストへの辞書を作成しようとしました。
mapping={}
for a in actuals:
mapping[a]=[v for v in peaks if v[0]==a[0]]
ただし、エラーが返されました
TypeError: unhashable type: 'list'
何がうまくいかなかったのでしょうか?
a
リスト型のように見えます(actuals
リストのリストです)。辞書のキーを に割り当てようとしていますが、list
これは不可能です。ハッシュ可能な他のキーを考え出す必要があります。
それぞれa
が変更しないリストである場合は、それからタプルを作成できます。
mapping={}
for a in actuals:
mapping[tuple(a)]=[v for v in peaks if v[0]==a[0]]
ディクショナリのキーを実装する必要があり__hash__()
、これらの関数は、オブジェクトが変更されても変更されない値を返す必要があり、一方で、オブジェクトの内容に応じてハッシュ値を計算する必要があります。リストの内容は変更される可能性があるため、実装されていません__hash__()
。