listas lista funcion extent python

python - lista - TypeError: tipo de ajuste insondable: ''dict''



python lista extend (1)

Estás tratando de usar un dict como clave para otro dict o en un set . Eso no funciona porque las claves tienen que ser manejables. Como regla general, solo los objetos inmutables (cadenas, enteros, flotantes, conjuntos congelados, tuplas de elementos inmutables) son aptos para ser procesados ​​(aunque las excepciones son posibles). Entonces esto no funciona:

>>> dict_key = {"a": "b"} >>> some_dict[dict_key] = True Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: ''dict''

Para usar un dict como clave, primero debes convertirlo en algo que se pueda haschar. Si el dict que desea usar como clave consta de valores inmutables, puede crear una representación que pueda procesarse de esta manera:

>>> key = frozenset(dict_key.items())

Ahora puede usar la key como una clave en un dict o set :

>>> some_dict[key] = True >>> some_dict {frozenset([(''a'', ''b'')]): True}

Por supuesto, necesita repetir el ejercicio cada vez que quiera buscar algo con un dict:

>>> some_dict[dict_key] # Doesn''t work Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: ''dict'' >>> some_dict[frozenset(dict_key.items())] # Works True

Si el dict que desea usar como clave tiene valores que en sí mismos son dictados y / o listas, necesita recursivamente "congelar" la clave prospectiva. Aquí hay un punto de partida:

def freeze(d): if isinstance(d, dict): return frozenset((key, freeze(value)) for key, value in d.items()) elif isinstance(d, list): return tuple(freeze(value) for value in d) return d

Esta pieza de código me está dando un unhashable type: dict error unhashable type: dict ¿alguien puede explicarme cuál es la solución?

negids = movie_reviews.fileids(''neg'') def word_feats(words): return dict([(word, True) for word in words]) 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)