TypeError: unhashable type: 'dict'
このエラーは、辞書を辞書内のキーとして使用しようとしていることを示しますまたはセットします。デフォルトでは、辞書はハッシュ化できないため、キーとして使用できません。
解決策:
この問題を解決するには、frozenset を使用して辞書をフリーズします。これにより、辞書のハッシュ可能な表現が作成されます。ハッシュ化できるのは不変オブジェクト (文字列、数値、タプルなど) のみであるため、不変性は重要です。
例:
次のコードを考えてみましょう:
<code class="python">movie_reviews = ... negids = movie_reviews.fileids('neg') def word_feats(words): return dict([(word, True) for word in words]) # Constructing a list of tuples instead of dicts for hashability negfeats = [(word_feats(movie_reviews.words(fileids=[f])), 'neg') for f in negids] stopset = set(stopwords.words('english')) def stopword_filtered_word_feats(words): return dict([(word, True) for word in words if word not in stopset]) # Use frozenset to freeze the key (dict) of the nested dictionary result = {frozenset(key.items()): value for key, value in negfeats}</code>
この例では、ハッシュ可能性を確保するために、辞書の代わりにタプルを使用して negfeats リストが構築されています。さらに、stopword_filtered_word_feats 関数は、キーが凍結されたタプルのセットである、元のコードとは異なる辞書構造を返します。この構造はハッシュ可能であり、更新されたコードと互換性があります。
以上がここでは、中心的な問題と解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 直接的かつ有益: * TypeError: \"ハッシュ化できない型: \'dict\'\" - Python で辞書をハッシュ可能にする方法 * ピィの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。