2017-01-16 10 views
0

私はリストを値として持つ辞書を持っています。値を選択したときにリストから値をランダムに選択すると、値を削除する必要があります。彼らは再び使われることはありませんが、キーとアウター値はそのままにしておかなければなりません。キーを削除せずにdicの値を削除

これは私のコードではありません。それを説明するためにそれを簡素化する。

dic1 ={1:[[0,1],[1,1]],2:[[0,1],[1,1]]} 

for key,value in dic1.items(): 
    if key == 2: 
    # for example, I want to delete from key 2: list element [0,1] 
    # so key 1 : [0,1] stays 

答えて

5

は、辞書はO(n)ループを避けるために作られて、ループしないでください。

dic1 ={1:[[0,1],[1,1]],2:[[0,1],[1,1]]} 

アクセスキーで辞書を:あなたは、値の参照を取得します。あなたはその中にあるデータを知っているので、あなたがすることにより、第1のリスト項目を削除することができます。

k = 2 
value = dic1.get(2,None) # returns None if key not found 
if isinstance(value,list) and value: # this is a list, and not empty 
    value.pop(0) 
else: 
    # error message 
    print("Warning: nothing done") 
+0

ありがとうyust:もちろん

dic1[2].pop(0) 

、あなたは一般的な場合に、より安全にそれを書く必要があるだろう何が必要なのですか? – Belguimclub

+0

@Chris_Rands:done。ありがとう。 –

関連する問題