Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

"TypeError: list indices must be integers or slices, not str", ma in realtà è un dizionario

P
Powner (5600 points)
36 68 85
in Programmare in Python by (5.6k points)
closed by

Come da titolo, il problema in cui incorro spesso quando lavoro con i dizionari è quello che riguarda il tipo.

In questo caso, mi restituisce "list indices must be integers or slices, not str" per un'istruzione del tipo:

dizionario[el]=lista

dove el è un elemento di un insieme di tipo stringa, ma alla riga precedente ho assegnato:

dizionario={}

Quindi dizionario è di tipo dict, non list.

2.7k views
closed with the note: Problema risolto

2 Answers

francesco.dev (33560 points)
21 51 129
by (33.6k points)
Ciao!

Piccoli consigli:
- Hai provato a stampare el per vedere cos'é effettivamente ogni volta?
- Hai provato a mettere le parentesi quadre per la lista, ovvero  diz[x]  = [lista]
- Hai provato a stampare la lista per vedere cosa contiene?

Ps.: anche se raro il tuo problema esiste e molti consigliano di fare attenzione all'uso degli indici, ovvero se realmente questi sono accessibili.

Fammi sapere ciò che ti ho chiesto e sarò felice di aiutarti,
- Francesco Pio Scognamiglio
P
Powner (5600 points)
36 68 85
by (5.6k points)
Rispondo punto per punto:

-Ho controllato il type di el, e come ho già detto è di tipo str.

-Ho già messo le parentesi quadre per la lista, anche se (essendo una lista) mi avrebbe poi prodotto una lista contenente lista.

-Come può influire cosa contiene la lista?
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Sto cercando di risolvere il tuo problema e dobbiamo prendere tutto in considerazione.
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Prova a stampare la lista, prova a mettere delle stampe strategiche prima di tale assegnazione e fammi sapere
P
Powner (5600 points)
36 68 85
by (5.6k points)
Ok ho risolto, avevo un'assegnazione in un ciclo successivo che per un errore di battitura mi creava problemi con il tipo.
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Ottimo, mi fa tanto piacere!
Ricorda che a volte i problemi che vediamo a console derivano da altri problemi, ecco perché ti ho chiesto tutte quelle cose
P
Powner (5600 points)
36 68 85
by (5.6k points)
Sisi lo so, l'unica cosa che non mi tornava era come gli elementi contenuti nella "lista-attributo" potessero influire
francesco.dev (33560 points)
21 51 129
by (33.6k points)
L'ho presa in considerazione perché a mali estremi meglio tentare tutto
giorgio.belli (10140 points)
23 74 98
by (10.1k points)
Ciao, è un errore un po strano e per risolverlo credo tu debba andare per tentativi.
Inizierei usando il costruttore del dizionario dict() per inizializzarlo anzi che le classiche {}.
Un'altra prova che puoi fare è un print del tipo do dato della variabile dizionario
Es. print(type(dizionario)) cosi sarai certo del tipo di dato assegnato.
Prova e fammi sapere  spero do averti aiutato. (rofl)
P
Powner (5600 points)
36 68 85
by (5.6k points)
Ho utilizzato anche il debugger, le variabili sono del tipo che ho detto: dizionario è dict, el è str.

Ah, e anche con il costruttore "dict()" il risultato non cambia.