2017-05-17 7 views
1

私は既存のdictを持っていますが、値はありません。私はそうのように、同時に2つのリストを反復処理して値を移入したいと思います: Dict to Read Listをタプルとして強制的に

for (pair,name) in enumerate(zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6'])): 
    my_dict[tuple(name)] = pair 

は、しかし、私はエラーを取得する:非ハッシュタイプ:リスト。

だから、タプルとしてリストをキャストしようとする試みがうまくいかないようです。タプルを選ぶ理由は、私が他の投稿から読んだことは、より良い方法だからです。

このメソッドを調整して、希望どおりに動作させることはできますか?私は他のソリューションにもオープンしています。

更新

私はポストに私の全体の機能を入れていないために責任を取るだろう。もっと簡潔にすると分かりやすくなると思ったが、最終的にはいくつかの重要な細部は見落とされていた。そのために残念。私はここでnumpysklearnで働いていることは私の全体の機能である:

pair_names = ['pair1','pair2','pair3','pair4','pair5','pair6'] 
pair_dict = {p:[] for p in pair_names} 
for (pair,key) in zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6']): 
    x = iris.data[:,pair] 
    y = iris.target 
    clf = DecisionTreeClassifier().fit(x,y) 
    decision_boundaries = decision_areas(clf,[0,7,0,3]) 
    pair_dict[key] = decision_boundaries 

これまでのところ、この質問への回答からの提案に行く、私はenumerateを取り除き、単にzipを使用します。残念ながら、今度はclf = DecisionTreeClassifier().fit(x,y)という行にエラーが表示されます。サンプル数がラベルの数と一致しません。私はサンプルサイズを全く変更しなかったので、私は奇妙に感じます。私の唯一の推測では、それはenumerateまたはzipとは何かを持っている - それは、ドキュメントの例

+1

あなたは '何をチェックしています列挙する(zip(...)) '実際に返す?それはあなたが思うものではありません。 –

+0

'list 'は変更可能であるため、辞書キーとして使用することはできません。 'my_dict = {[1]:1}'を実行しようとすると、 'TypeError:unhashable type: 'list''が返されます。 –

+0

@tobias_kありがとう、私はそれらを混ぜ合わせました。私はほんの数分前に自分自身に気づいた。投稿が更新されました。 –

答えて

2

から元の関数からの唯一の違いですので、たぶん、あなたが望むものである:

{ tuple(x):y for (x,y) in zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6'])} 
+0

この回避策に感謝しますが、更新された記事を参考にしたい場合はさらに問題があります。 –

+0

申し訳ありませんが、私は 'numpy'と' sklearn'を知らないので、私はあなたをさらに助けることはできません。 – albar

+0

すべて公平で、私の元の質問に答えました。私は問題を解決する方法を見つけ出しました。これは、範囲外だった別のリストを反復することで、私はそれを理解するのに十分なものを単純化しました。 –

関連する問題