Dizionario Python fromkeys ()

Il metodo fromkeys () crea un nuovo dizionario dalla sequenza di elementi data con un valore fornito dall'utente.

La sintassi del fromkeys()metodo è:

 dizionario.fromkeys (sequenza (, valore))

fromkeys () Parametri

fromkeys() il metodo accetta due parametri:

  • sequenza - sequenza di elementi che deve essere utilizzata come chiavi per il nuovo dizionario
  • valore (Opzionale) - valore impostato su ogni elemento del dizionario

Valore restituito da fromkeys ()

fromkeys() restituisce un nuovo dizionario con la sequenza di elementi data come chiavi del dizionario.

Se viene impostato l'argomento valore, ogni elemento del dizionario appena creato viene impostato sul valore fornito.

Esempio 1: creare un dizionario da una sequenza di chiavi

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) vowels = dict.fromkeys(keys) print(vowels)

Produzione

 ('a': Nessuno, 'u': Nessuno, 'o': Nessuno, 'e': Nessuno, 'i': Nessuno) 

Esempio 2: creare un dizionario da una sequenza di chiavi con valore

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)

Produzione

 ('a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel') 

Esempio 3: creare un dizionario da un elenco di oggetti modificabili

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = dict.fromkeys(keys, value) print(vowels) # updating the value value.append(2) print(vowels)

Produzione

 ('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 value è un oggetto mutabile (il cui valore può essere modificato) come lista, dizionario, ecc., Quando l'oggetto mutabile viene modificato, anche ogni elemento della sequenza viene aggiornato.

Questo perché a ogni elemento viene assegnato un riferimento allo stesso oggetto (punta allo stesso oggetto nella memoria).

Per evitare questo problema, utilizziamo la comprensione del dizionario.

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = ( key : list(value) for key in keys ) # you can also use ( key : value(:) for key in keys ) print(vowels) # updating the value value.append(2) print(vowels)

Produzione

 ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) 

Qui, per ogni chiave in chiavi, viene creato e assegnato un nuovo elenco da valore.

In sostanza, il valore non viene assegnato all'elemento, ma viene creato un nuovo elenco, che viene quindi assegnato a ciascun elemento nel dizionario.

Articoli interessanti...