English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Metodi di dizionario di Python
Il metodo fromkeys() crea un nuovo dizionario basato sulla sequenza di elementi forniti, con i valori forniti dall'utente.
La sintassi del metodo fromkeys() è:
dictionary.fromkeys(sequence[, value])
Il metodo fromkeys() accetta due parametri:
sequence -Sequenza di elementi utilizzata come chiavi del nuovo dizionario
-Valore (opzionale) -Valore impostato per ogni elemento del dizionario
Il metodo fromkeys() restituisce un nuovo dizionario che ha la sequenza di elementi forniti come chiavi del dizionario.
Se è impostato il parametro value, ogni elemento del nuovo dizionario creato verrà impostato con il valore fornito.
# Chiavi di vocale keys = {'a', 'e', 'i', 'o', 'u'} vowels = dict.fromkeys(keys) print(vowels)
Quando si esegue il programma, l'output è:
{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}
# Chiavi di vocale keys = {'a', 'e', 'i', 'o', 'u'} value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
Quando si esegue il programma, l'output è:
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}
# Chiavi di vocale keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = dict.fromkeys(keys, value) print(vowels) # Valore aggiornato value.append(2) print(vowels)
Quando si esegue il programma, l'output è:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]} {'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2]}
Se il value fornito è un oggetto mutabile (il cui valore può essere modificato), comelist,dictionarySe, quindi, si modifica un oggetto mutabile, ogni elemento della sequenza viene aggiornato.
Questo perché, per ogni elemento, viene assegnato un riferimento all'oggetto stesso (che punta all'oggetto nella memoria)
Per evitare questo problema, usiamo la comprensione del dizionario.
# Chiavi di vocale keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = { key: list(value) for key in keys } # Puoi anche usare { key: value[:] for key in keys } print(vowels) # Valore aggiornato value.append(2) print(vowels)
Quando si esegue il programma, l'output è:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]} {'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
In questo caso, per ogni chiave in keys, viene creata una nuova lista da value e assegnata a essa.
In sostanza, value non viene assegnato all'elemento, ma viene creato un nuovo elenco e poi assegnato a ciascun elemento del dizionario.