Re: Domanda su Python: iterare fra le chiavi di un dizionario.

ChrisLM
 

Intanto Gabriele toglierei lo specifico verso un utente, anche perché richieste poste in questo modo cominciano a infastidire anche altri compreso me.

Insinuazioni senza contenuto concreto dietro non servono a nulla, non capisco che czz di aiuto puoi dare se dichiari di non conoscere le due materie proposte.

vuoi sapere sui dizionari python? va benissimo anche senza fronzoli inutili attorno.

Io ti consiglio di dare un'occhiata ai differenti usi dei dizionari in python 2 e python 3. Ci sono pure dei moduli interessanti per mantenere e gestire meglio i dizionari nelle due versioni.

Se già conosci un pochino i dizionari, ti consiglierei di rivedere assieme pure le liste e tuple python, in modo da capire meglio come gestire il programma che vuoi fare e scegliere la soluzione migliore per il caso. Di certo non puoi manipolare un dizionario come una lista.


Ciao,



Chris.

Gabriele Battaglia via Groups.Io ha scritto il 12/02/2020 alle 10:38:

Ciao a tutti.
Mancando una lista specifica per la programmazione, approfitto se posso, della presenza qui di ottimi conoscitori di Python, per porre una domanda.

Sto cercando di realizzare un programma che aiuti i principianti nello studio della chitarra. Ah, lo specifico per Manolo, intendo i principianti come me, che non ne so mezza ne di chitarra, ne di Python, per carità.

Detto ciò, sono alla versione 0.5.1, ho spiegato a Python cos'è una scala chromatica composta da 8 ottave, da quale nota a quale nota vanno le sei corde della chitarra e, ovviamente, in quale posizione si trovano tutte le note sul manico.

Mi trovo difronte alla necessità di iterare le chiavi di un dizionario ma mi succede quanto segue in questo piccolo esempio:

Ho questo dizionario:
d
{1: 'do', 2: 're', 3: 'mi', 4: 'fa', 5: 'sol', 6: 'la', 7: 'si'}

Mi serve un ciclo che stampi le note mi fa sol. Allora scrivo:

for j in d[2:5]:
...   print(j)
...
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: unhashable type: 'slice'

Come funziona l'uso degli indici di slicing, sulle chiavi di un dizionario?

Se, invece di iterare su d, itero su d.keys() ottengo lo stesso errore.
Potrei convertire d.keys() in una lista, ma non mi sembra una cosa elegante.
Potrei anche spacchettare il dizionario facendo una cosa del tipo:
for k, v in d:

e poi mettere un if k maggiore di 1 e minore di 6.... Ma mi sembra ancora più brutto.
Perciò, secondo voi qual è il modo giusto per farsi una passeggiata fra le keys di un dizionario?

Gabry.

Join nvda-it@groups.io to automatically receive all group messages.