web-dev-qa-db-ja.com

TypeError:ハッシュできない型: 'dict'、dictが別のdictのキーとして使用された場合

私はこのコードを持っています:

for element in json[referenceElement].keys():

そのコードを実行すると、次のエラーが表示されます。

TypeError:ハッシュできない型: 'dict'

そのエラーの原因は何ですか?それを修正するにはどうすればよいですか?

63
Frias

エラーから、referenceElementは辞書であると推測します(以下の再現を参照)。ディクショナリはハッシュできないため、別のディクショナリのキーとして使用できません(または、それ自体については!)。

>>> d1, d2 = {}, {}
>>> d1[d2] = 1
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unhashable type: 'dict'

おそらくfor element in referenceElement.keys()またはfor element in json['referenceElement'].keys()のいずれかを意味します。 jsonreferenceElementのタイプとそれらに含まれる内容に関する詳細なコンテキストを使用して、どちらのソリューションも機能しない場合は、より適切に支援することができます。

76
marcog

私のように思えるのは、キーメソッドを呼び出すことで、リストまたはタプルを探しているときに、python辞書オブジェクトに戻ります。したがって、辞書のすべてのキーを取得し、それらをリストに入れてからforループを使用してみてください。

1
dshipper