Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Python] Foreach su dizionario

    Salve a tutti, ho un problemino che non riesco a risolvere, e dato che non trovo documentazione adeguata...

    Se in python ho un dizionario con coppie chiave->valore, come faccio a realizzare un ciclo che agisca su tutti gli elementi e mi renda disponibile, all'interno di ogni ciclo, la chiave ed il valore corrente, nello stesso ordine in cui compaiono nella dichiarazione del dizionario?

    Ho provato con questo:

    for x in dizionario.keys():
    print dizionario[x]

    ma visualizza i dati in un ordine casuale...

  2. #2

    Re: [Python] Foreach su dizionario

    Originariamente inviato da scitrek
    Se in python ho un dizionario con coppie chiave->valore, come faccio a realizzare un ciclo che agisca su tutti gli elementi e mi renda disponibile, all'interno di ogni ciclo, la chiave ed il valore corrente, nello stesso ordine in cui compaiono nella dichiarazione del dizionario?
    Credo che, per come sia implementato il dizionario, sia impossibile ottenere quell'ordine se non conteneva particolari proprieta` (es: tutte le chiavi ordinate lessicograficamente).
    Attendi il parere di qualcun'altro piu` esperto per conferme o smentite.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    Ti ringrazio e resto in attesa...

  4. #4
    Non sono sicuro di aver ben capito cosa ti serve.
    Se scrivi qualcosa del genere:
    codice:
    a = {}
    a["ciao"]=2
    a["cane"]=3
    a["saluto"]=4
    for x in a.keys():
        print x
    l'output sarà:
    ciao
    cane
    saluto

    che *è* nell'ordine di immissione... a te cosa serve esattamente?

  5. #5
    Io ho creato un array in questo modo:

    note = {"2DO" : 66, "2DO#" : 70, "2RE" : 74, "2RE#" : 78, "2MI" : 83, "2FA" : 88, "2FA#" : 93, "2SOL" : 98, "2SOL#" : 104, "2LA" : 110, "2LA#" : 117, "2SI" : 124}

    e poi vorrei scorrerlo in questo ordine, per far suonare le note nell'ordine in cui le ho inserite, ma facendo

    for x in noteb.keys(): Beep(noteb[x],500)

    me le suona in un ordine diverso, e precisamente

    104 - 124 - 98 - 110 - 74 - 70 - 88 - 93 - 66 - 83 - 78 - 117

    Come faccio a fargliele visualizzare in quell'ordine?

    Il tuo esempio funziona, ma il mio codice no... c'è qualche errore di fondo?

  6. #6
    sarebbe sicuramente utile vedere il codice completo.
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  7. #7
    Non è che sia espertissimo di python ma vedo 2 possibilità:
    1)Inserisci le note nel modo mio, una per una
    2)Crei il dizionario delle note come la fai adesso e crei anche una lista(o una tupla) con l'elenco ordinato delle note. Qualcosa come:
    codice:
    note = {"2DO" : 66, "2DO#" : 70, "2RE" : 74, "2RE#" : 78, "2MI" : 83,
     "2FA" : 88, "2FA#" : 93, "2SOL" : 98, "2SOL#" : 104, "2LA" : 110, "2LA#" : 117, "2SI" : 124}
    
    lista_note = ("2DO", "2DO#", "2RE", "2RE#", "2MI", "2FA", "2FA#", "2SOL",
     "2SOL#", "2LA", "2LA#", "2SI")
    
    for x in lista_note:
        Beep(note[lista_note[x]])

  8. #8
    Chiedo scusa, ma a livello di codice c'è davvero differenza tra un array i cui elementi vengono assegnati tramite ridichiarazione echiave, e uno in cui tutte le coppie chiave-valore vengono assegnate alla dichiarazione?

    Spero proprio che non sia così, anche perchèè sembrerebbe una bella fregatura...

    E se creo un array in questo modo
    codice:
    note = {"2DO" : 66, "2DO#" : 70, "2RE" : 74}
    note["2RE#"] = 78
    note["2MI"] = 83
    cosa succede? Mi considera validi in posizione solo gli ultimi due elementi?

  9. #9
    cosa succede? Mi considera validi in posizione solo gli ultimi due elementi?
    Il modo migliore per scoprirlo è provarlo (ma perchè manca uno smiley che ti fa l'occhiolino!? troppo banale forse?)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.