2014-06-30 17 views
6

Esiste un modo semplice per eliminare una proprietà di un dizionario in Python quando è possibile che la proprietà non sia presente per cominciare?Elimina una proprietà di un dizionario in Python che può essere o non essere presente

se si usa l'istruzione del, un KeyError è il risultato:

a = {} 
del a['foo'] 
>>>KeyError: 'foo' 

E 'un po' prolisso da usare un'istruzione if e si deve digitare 'foo' e a due volte:

a = {} 
if 'foo' in a: 
    del a['foo'] 

Alla ricerca di qualcosa di simile a dict.get() che per impostazione predefinita è un valore None se la proprietà non è presente:

a = {} 
a.get('foo') # Returns None, does not raise error 

risposta

9

È possibile utilizzare dict.pop, che consente di specificare un valore predefinito per restituire se la chiave non esiste:

>>> d = {1:1, 2:2} 
>>> d.pop(1, None) 
1 
>>> d 
{2: 2} 
>>> d.pop(3, None) # No error is thrown 
>>> d 
{2: 2} 
>>> 
Problemi correlati