2016-11-19 7 views
0
data_keys=list(set(data_keys)) 
print data_keys 

このリストの重複するキーを削除しようとしましたが、このエラーが見つかりました。'list' error !!! TypeError:unhashable type: 'list'

私はこれのための簡単な解決策を探しています。

エラーメッセージ:

data_keys=list(set(data_keys)) 
TypeError: unhashable type: 'list' 
+0

をあなたは何を示すべきです'data_keys'はです。 –

+0

明らかに 'data_keys'にはリストが含まれていますが、これはセットに入れることはできません。それとも辞書のキーとして使われていますか? – jonrsharpe

答えて

2

あなたdata_listlistタイプのアイテムを持っているので。 set()は、ハッシュ可能オブジェクトでのみ使用でき、リストはハッシュ可能ではありません。この作業を行うためには

>>> data_list = [1, 2, 3] # All numbers, works fine 
>>> set(data_list) 
{1, 2, 3} 


>>> data_list = [1, 2, 3, [1, 2, 3]] # Has `list` as an element 
>>> set(data_list)      # Raises `TypeError` 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

、あなたがようtupleにネストされたリストに変換することができます:たとえば、詳細については

>>> data_list = [1, 2, 3, (1, 2, 3)] 
#      ^It is `tuple` instead of `list` 
>>> set(data_list)  # works fine 
{1, 2, 3, (1, 2, 3)} 

、あなたが読むことができる:Otto's Answer to "Python: Add list to set?"

+0

だから解決策は何でしょうか。私は長いリストを持っているので、それを見るのは難しい作業です。 –

+0

私はすでに私の答えの最後に追加しました。 'data_list'の要素として' list'の代わりに 'tuple'を使用します。 –

+0

そして大きなリストを' tuple(your_list) 'を使ってタプルに変換すると、' data_keys = list(set(tuple(data_keys))) ' –

関連する問題