TypeError : type non hachable : 'dict'
Cette erreur indique que vous essayez d'utiliser un dictionnaire comme clé dans un dictionnaire ou réglé. Les dicts, par défaut, ne peuvent pas être hachés et ne peuvent donc pas être utilisés comme clés.
Solution :
Pour résoudre ce problème, vous pouvez geler le dictionnaire à l'aide de Frozenset, qui crée une représentation hachable du dictionnaire. L'immuabilité est essentielle car seuls les objets immuables (comme les chaînes, les nombres et les tuples) peuvent être hachés.
Exemple :
Considérez ce code :
<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>
Dans cet exemple, la liste negfeats est construite avec des tuples au lieu de dictionnaires pour garantir la hachabilité. De plus, la fonction stopword_filtered_word_feats renvoie une structure de dictionnaire différente de celle du code d'origine, où les clés sont des ensembles de tuples gelés. Cette structure est hachable et compatible avec le code mis à jour.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!