W3docs

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:

python— editable, runs on the server

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:

python— editable, runs on the server

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.

python— editable, runs on the server

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

ObiettivoMetodo
Aggiungere o sovrascrivere una singola chiavedict[key] = value
Aggiungere o sovrascrivere più chiavidict.update(...) o dict |= other (3.9+)
Aggiungere una chiave solo se assentedict.setdefault(key, default)
Unire due dizionari in un terzonew = a | b (3.9+)
Creare un nuovo dizionario da una lista di chiavidict.fromkeys(keys, default)

Capitoli Correlati

Pratica

Pratica
Which of the following are valid ways to add a new key-value pair to an existing Python dictionary?
Which of the following are valid ways to add a new key-value pair to an existing Python dictionary?
Was this page helpful?