python valueerror
Funzioni e metodi Python
Michael Zippo
31.10.2021
Python non disimballa bene le valigie. Quando viene visualizzato l’errore "valueerror: troppi valori da decomprimere (previsto 2)", non significa che Python sta disimballando una valigia. Significa che stai tentando di accedere a troppi valori da un iteratore.
In questa guida, parliamo di cosa significa questo errore e perché viene generato. Esaminiamo un frammento di codice di esempio con questo errore in modo che tu possa imparare a risolverlo.
Il problema: valueerror: troppi valori da decomprimere (previsto 2)
Un ValueError è sollevata quando si tenta di accedere alle informazioni da un valore che non esiste. I valori possono essere qualsiasi oggetto come un elenco, una stringa o un dizionario.
Diamo un’occhiata a il nostro messaggio di errore:
In Python, "decompressione" si riferisce al recupero di elementi da un valore. Ad esempio, il recupero di elementi da un elenco viene indicato come "disimballaggio" quella lista. Visualizzi il suo contenuto e accedi a ciascun elemento singolarmente.
Il messaggio di errore sopra ci dice che stiamo cercando di decomprimere troppi valori da un valore.
Ci sono due errori che spesso causano questo errore:
- Quando provi a scorrere un dizionario e decomprimere le chiavi e i valori separatamente.
- Quando dimentichi di decomprimere ogni elemento da un elenco in una variabile.
Osserviamo ciascuno di questi scenari individualmente.
L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver partecipato a un bootcamp. Fatti abbinare a un bootcamp oggi.
Il laureato medio del bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’inizio di un bootcamp alla ricerca del primo lavoro.
Cerchiamo di ripetere sopra un dizionario. Il dizionario su cui itereremo memorizzerà le informazioni su un elemento nella tavola periodica. Per prima cosa, definiamo il nostro dizionario:
Il nostro dizionario ha tre chiavi e tre valori. I tasti sono a sinistra dei due punti; i valori sono a destra dei due punti. Vogliamo stampare sia le chiavi che i valori sulla console. Per fare ciò, usiamo un ciclo for:
In questo ciclo, scompattiamo "idrogeno" in due valori: chiave e valore. Vogliamo la "chiave" corrispondere alle chiavi nel nostro dizionario e "value" per corrispondere ai valori.
Eseguiamo il nostro codice e vediamo cosa succede:
Il nostro codice restituisce un errore.
Questo perché ogni elemento nel dizionario "idrogeno" è un valore. Chiavi e valori non sono due valori separati nel dizionario.
Risolviamo questo errore utilizzando un metodo chiamato items(). Questo metodo analizza un dizionario e restituisce chiavi e valori memorizzati come tuple. Aggiungiamo questo metodo al nostro codice:
Ora, proviamo a eseguire di nuovo il nostro codice:
Abbiamo aggiunto il metodo items()
alla fine di "idrogeno". Questo restituisce il nostro dizionario con coppie chiave-valore memorizzate come tuple. Possiamo vederlo stampando il contenuto di hydrogen.items()
sulla console:
Il nostro codice restituisce:
Ogni chiave e valore sono memorizzati nella propria tupla.
Una nota per Python 2.x
In Python 2.x, usi iteritems()
al posto di items()
. Ciò ottiene lo stesso risultato ottenuto nell’esempio precedente. Il metodo items()
è ancora accessibile in Python 2.x.
Sopra, abbiamo usa iteritems()
invece di items()
. Eseguiamo il nostro codice:
Le nostre chiavi e i nostri valori sono estratti dal pacchetto "idrogeno" dizionario. Questo ci permette di stampare singolarmente ogni chiave e valore sulla console.
Python 2.x sta iniziando a diventare deprecato. è meglio usare metodi più moderni quando disponibili. Ciò significa che items()
è generalmente preferito a iteritems()
.
Esempio: decomprimere i valori in una variabile
Quando si scompattare un elenco in una variabile, il numero di variabili in cui decomprimere gli elementi dell’elenco deve essere uguale al numero di elementi nell’elenco. In caso contrario, viene restituito un errore.
Scomponiamo questi valori nelle loro variabili. Ciascuno di questi valori corrisponde alle seguenti ciambelle vendute dal negozio:
"Il Karma di carriera è entrato nella mia vita quando ne avevo più bisogno e mi ha aiutato rapidamente ad abbinare con un bootcamp. Due mesi dopo la laurea, ho trovato il lavoro dei miei sogni in linea con i miei valori e obiettivi nella vita!"
Scomponiamo la nostra lista in quattro variabili. Questo ci permette di memorizzare ogni prezzo nella sua variabile. Scomponiamo la nostra lista:
Questo codice decomprime la nostra lista in quattro variabili. Ogni variabile corrisponde a una ciambella diversa. Stampiamo il valore di "mirtillo" sulla console per verificare se il nostro codice funziona. Esegui il nostro codice e guarda cosa succede:
Cerchiamo di decomprimere quattro valori, la nostra lista contiene cinque valori. Python non sa quali valori assegnare alle nostre variabili perché stiamo scompattando solo quattro valori. Ciò si traduce in un errore.
L’ultimo valore nel nostro elenco è il prezzo della ciambella al cioccolato. Risolviamo il nostro errore specificando un’altra variabile per decomprimere la lista:
Il nostro codice restituisce: 2.1. Il nostro codice decomprime con successo i valori nel nostro elenco.
L’errore "valueerror: troppi valori da decomprimere (previsto 2)" si verifica un errore quando non si scompattano tutti gli elementi di un elenco.
Questo errore è spesso causato dal tentativo di scorrere gli elementi in un dizionario. Per risolvere questo problema, usa il metodo items()
per scorrere un dizionario.