セット内のキーとして辞書を使用すると、「TypeError: unhashable type: \'dict\'」エラーが発生するのはなぜですか?

DDD
リリース: 2024-10-27 00:36:03
オリジナル
1077 人が閲覧しました

Why does using a dictionary as a key in a set raise a

TypeError: Unhashable Type: 'dict'

問題:

次のコードで「TypeError:」が発生するのはなぜですか:ハッシュ不可能な型: 'dict'" エラー?

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])

result=stopword_filtered_word_feats(negfeats)
ログイン後にコピー

回答:

作成されたセットのキーとして辞書を使用しようとしているためにエラーが発生しますストップセット変数によって。ただし、辞書はハッシュ可能なオブジェクトではないため、セットや辞書のキーとして使用することはできません。

解決策:

この問題を解決するには、 negfeat の辞書を凍結セットに変換し、ハッシュ可能にします。次のコードは修正されたバージョンを示しています:

negfeats = [(frozenset(word_feats(movie_reviews.words(fileids=[f])).items()), '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])

result=stopword_filtered_word_feats(negfeats)
ログイン後にコピー

以上がセット内のキーとして辞書を使用すると、「TypeError: unhashable type: \'dict\'」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート