2017-08-29 1 views
0

私はdictRefGenomesDict)で、キーは受託番号(string)であり、値は2次元の遺伝子特性のリストです。私はディクショナリの値である二次元のリストにアクセスする方法は?

for key in RefGenomesDict.keys(): 
    print(str(key)+ "\t" + str(RefGenomesDict[key])) 

を使用することによって、それは期待Annonymousの二次元のリストが含まれないことを確認するためにRefGenomesDictをチェックすると予想される内容は、各キーのために印刷されています。

私は

InfoList = copy.deepcopy(RefGenomesDict[AccNum]) 

を使用して、新しい変数にリストを割り当てるしようとすると、私は

TypeError: unhashable type: 'list'. 

エラーを取得するにはどうすれば2次元のリストの値へのアクセスを得ることができますか?

+1

「AccNum」はリストです。したがって、intを使用するか、キーが実際に何であれ使用しますか? –

+0

あなたの辞書を教えてください。 – MishaVacic

+1

なぜダブルルックアップですか? somedict.items()のキー、値のために(python 2のiteritems)行うことができます。 –

答えて

3

Python辞書は、ハッシュ可能ではないため、変更可能なオブジェクトを一般的にキーとしてサポートしていません。変更可能なタイプは、dict,set、およびlistです。

In [386]: {[1, 2] : 123} 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-386-3ba6ff881f9f> in <module>() 
----> 1 {[1, 2] : 123} 

TypeError: unhashable type: 'list' 

キーで辞書にアクセスしてこのエラーが発生する場合は、無効なキーを使用して間違いなくインデックスを作成しています。 AccNumは、エラーの外観によって、リストです。

あなたはこのように、InfoListに値をループ内でのキーを反復して割り当てることができる必要があります:あなたはないInfoListに変更をしようとしている場合

for key in RefGenomesDict: 
    InfoList = copy.deepcopy(RefGenomesDict[key]) 

これは結構ですオリジナルに反映したいそうでない場合は、deepcopyコールを破棄してください。

関連する問題