2017-01-16 2 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]]} 

Доступ к словарю по ключу: вы получите ссылку на значение. Так как вы знаете, какие данные в нем, вы можете удалить первый элемент списка:

dic1[2].pop(0) 

Конечно, вы должны написать это более безопасно в общем случае:

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

спасибо ЮСТ что мне нужно – Belguimclub

+0

@Chris_Rands: сделано. Благодарю. –

Смежные вопросы