Note to self (pun intended): questo post rappresenta una sorta di appunto mentale per ricordarmi il funzionamento di setdefault in Python, visto che puntualmente mi trovo ad utilizzarlo.

setdefault è utilizzato sui dizionari (dict) e permette di impostare una chiave di default durante una set. Mi spiego meglio con un esempio:

>>> D
{1: 'leonard', 2: 'sheldon', 3: 'wolowitz', 4: 'rajesh'}

Vediamo come funziona il metodo setdefault:

>>> D.setdefault(1, 'penny')
'leonard'
>>> D
{1: 'leonard', 2: 'sheldon', 3: 'wolowitz', 4: 'rajesh'}
>>> D.setdefault(5, 'penny')
'penny'
>>> D
{1: 'leonard', 2: 'sheldon', 3: 'wolowitz', 4: 'rajesh', 5: 'penny'}

Ovvero, setdefault valuta la chiave passata come primo argomento:

  • se è già presente nel dizionario, viene ritornato il valore della chiave presente nel dizionario;
  • altrimenti viene aggiunta al dizionario con il valore specificato come argomento.

in termini pythonici:

def setdefault(d, key, val):
    if key in d:
        return d[key]
    else:
        d[key] = val