Aggiungere Elementi a un Dizionario Python
Impara quattro modi per aggiungere elementi a un dizionario Python: parentesi quadre, update(), setdefault() e l'operatore di fusione Python 3.9+, con esempi chiari.
I dizionari Python sono collezioni mutabili e ordinate (da Python 3.7) di coppie chiave-valore. Poiché sono mutabili, puoi aggiungere nuove voci in qualsiasi momento dopo la creazione. Questo capitolo illustra tutte le tecniche standard per aggiungere elementi a un dizionario, inclusi gli operatori di fusione introdotti in Python 3.9+, con note pratiche su quando conviene usare ciascun approccio.
Cos'è un Dizionario Python?
Un dizionario memorizza dati come coppie chiave-valore all'interno di parentesi graffe {}. Le chiavi devono essere uniche e immutabili (string, numeri o tuple); i valori possono essere qualsiasi oggetto Python.
# A simple dictionary
person = {'name': 'Alice', 'age': 30, 'city': 'New York'}Le chiavi sono uniche — se assegni un valore a una chiave già esistente, il vecchio valore viene sovrascritto, non duplicato. Tieni a mente questo comportamento mentre esamini i metodi di seguito.
Modi per Aggiungere Elementi a un Dizionario
Usare la Notazione con Parentesi Quadre
Il modo più semplice per aggiungere una nuova coppia chiave-valore è l'assegnazione diretta con le parentesi quadre:
Output:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Se la chiave esiste già, il valore viene sostituito anziché aggiunto:
my_dict = {'name': 'John', 'age': 25}
my_dict['age'] = 30 # overwrites 25
print(my_dict)
# {'name': 'John', 'age': 30}Usa l'assegnazione con parentesi quadre quando stai aggiungendo o aggiornando una singola chiave di cui conosci il nome in anticipo.
Usare il Metodo update()
dict.update() unisce una o più coppie chiave-valore nel dizionario in una singola chiamata. Puoi passare un altro dizionario, un iterabile di coppie (key, value) o argomenti per parola chiave.
Unire un secondo dizionario:
Output:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male', 'occupation': 'Software Engineer'}Usare argomenti per parola chiave per aggiungere più chiavi contemporaneamente:
my_dict = {'name': 'John', 'age': 25}
my_dict.update(city='New York', gender='Male')
print(my_dict)
# {'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Come l'assegnazione con parentesi quadre, update() sovrascrive le chiavi esistenti. Usalo quando devi aggiungere o aggiornare più voci contemporaneamente.
Usare il Metodo setdefault()
dict.setdefault(key, default) aggiunge una chiave solo se non è già presente. Se la chiave esiste, restituisce il valore esistente senza modificare nulla.
Output:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Quando la chiave esiste già, setdefault() la lascia invariata e restituisce il valore corrente:
my_dict = {'name': 'John', 'age': 25}
result = my_dict.setdefault('name', 'Alice')
print(result) # John — not overwritten
print(my_dict) # {'name': 'John', 'age': 25}setdefault() è lo strumento giusto quando vuoi inizializzare una chiave con un valore predefinito senza sovrascrivere accidentalmente dati già presenti. Un pattern comune consiste nell'inizializzare una chiave mancante con una lista vuota prima di aggiungere elementi:
groups = {}
for item in ['apple', 'banana', 'avocado']:
letter = item[0]
groups.setdefault(letter, []).append(item)
print(groups)
# {'a': ['apple', 'avocado'], 'b': ['banana']}Usare gli Operatori di Fusione (Python 3.9+)
Python 3.9 ha introdotto due operatori che offrono una sintassi concisa per combinare dizionari.
| — crea un nuovo dizionario unito (non distruttivo):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d3 = d1 | d2 # d1 and d2 are unchanged
print(d3)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}|= — aggiornamento in-place (equivalente a update() ma più breve):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1 |= d2 # d1 is modified
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}Quando le chiavi si sovrappongono, vince l'operando a destra — stessa precedenza di update(). Questi operatori richiedono Python 3.9 o versioni successive; usa update() per una compatibilità più ampia.
Usare dict.fromkeys() per Pre-popolare un Dizionario
dict.fromkeys(keys, default) è un metodo di classe che crea un nuovo dizionario partendo da un iterabile di chiavi e un valore predefinito opzionale. Non aggiunge elementi a un dizionario esistente.
# Create a dictionary with a shared default value
template = dict.fromkeys(['name', 'age', 'city'], 'Unknown')
print(template)
# {'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown'}
# You can then populate it with real values
template['name'] = 'Alice'
template['age'] = 28
print(template)
# {'name': 'Alice', 'age': 28, 'city': 'Unknown'}fromkeys() è utile per strutturare un dizionario quando conosci le chiavi in anticipo ma inserirai i valori in un secondo momento.
Scegliere il Metodo Giusto
| Obiettivo | Metodo |
|---|---|
| Aggiungere o sovrascrivere una singola chiave | dict[key] = value |
| Aggiungere o sovrascrivere più chiavi | dict.update(...) o dict |= other (3.9+) |
| Aggiungere una chiave solo se assente | dict.setdefault(key, default) |
| Unire due dizionari in un terzo | new = a | b (3.9+) |
| Creare un nuovo dizionario da una lista di chiavi | dict.fromkeys(keys, default) |
Capitoli Correlati
- Dizionari Python — panoramica sulla creazione e la sintassi dei dizionari
- Accedere agli Elementi — lettura dei valori tramite chiave,
get()e iterazione - Modificare gli Elementi — aggiornamento sicuro dei valori esistenti
- Rimuovere gli Elementi —
pop(),popitem(),deleclear() - Metodi dei Dizionari — riferimento completo per tutti i metodi built-in dei dizionari
- Iterare sui Dizionari — iterazione su chiavi, valori ed elementi