2016-10-27 9 views
0

クラスVoqConnIngressListを印刷する必要があります。Python:辞書値ペアが一意である場合にのみ追加する。彼らはすでに存在している場合は、私がdictionay値

def addEntry(self,voqID, core, nofVoqs, remoteVOQconnector, remoteModID, unitID): 
    key = [voqID+","+remoteModID] 
    if key not in self.dictOfVoqs: 
     self.dictOfVoqs[voqID+","+remoteModID] = [voqID, core, nofVoqs, remoteVOQconnector, remoteModID, unitID] 

    else: 
     print("Entry already present") 

voqConnIngressList.addEntry(10, 30, 40, 50, 60, 1)

voqConnIngressList.addEntry(10, 30, 40, 50, 60, 1)

をこのコアでは、それは重複を検出した場合。それが重複しているというメッセージを表示する必要があります。私のタイプこのコードは、私は

if key not in self.dictOfVoqs: TypeError: unhashable type: 'list'

+0

辞書を索引付けする文字列を作成する必要はなく、タプルを使用することもできます。 'dictOfVoqs [voqID、remoteModID]' –

答えて

1

あなたのkey変数を定義するためにそれらの角括弧[]を必要としない、以下のエラーを取得しています

。それを追加するとリストになります。

key = voqID + "," + remoteModID 
0

:だけでその行を置き換える

>>> [] in {} 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

:辞書のメンバーシップ・チェックリストはハッシュ可能ではなく、候補者/潜在的なキーとしての資格がないの辞書のキーを介して実行されますコードkey = [voqID+","+remoteModID]の2行目で、そのキーをリストにしています。キーをリストにすることはできません。角かっこを取り外します。それはPythonのバージョンの違いですが、...辞書で

キーがハッシュ可能にする必要がある、とリストはハッシュ可能ではありません(ただし、文字列のようになります)場合key = voqID+","+remoteModID

-1

わかりません。 お客様のキー key = [voqID+","+remoteModID] のリストのため、[]の の文字列にしてください。

関連する問題