[Python] Iterazione.

Federico Cerchiari federicocerchiari a gmail.com
Mar 12 Feb 2019 14:14:54 CET


Ciao, come dice Michele in tutte le versioni di Python precedenti alla 3.3
i dizionari non sono ordinati, bisogna sempre tenerlo a mente.

Ad ogni modo, per ciclare le chiavi di un dizionario conoscendo il valore
del prossimo ciclo puoi fare così:

from itertools import izip_longest
dizionario = {1: 'A', 2: 'B', 3: 'C'}
chiavi = list(dizionario.keys())
for chiave, prossima in izip_longest(chiavi, chiavi[1:]):
    print '=' * 20
    print 'chiave corrente: ', chiave
    print 'prossima chiave: ', prossima

in due parole:
 - salvi le chiavi in una lista (quindi ordinata)
 - con izip_longest crei una lista di coppie come se stessi ciclando
conteporaneamente le chiavi e le chiavi stesse partendo dal secondo elemento
 - nell'ultimo ciclo in "chiave" ci sarà l'ultima chiave, ed in "prossima"
ci sarà None

Se devi ciclare sia le chiavi che i valori con la stessa logica
(dict.iteritems() ma sapendo i prossimi items) pruoi cambiare con questo
codice:
cont_diz = dizionario.items()
for (chiave, valore), (prossima_chiave, prossimo_valore) in
izip_longest(cont_diz, cont_diz[1:], fillvalue = (None, None)):
    print '=' * 20
    print 'valori correnti:'
    print chiave, valore
    print 'Prossimi valori:'
    print prossima_chiave, prossimo_valore

..che praticamente è quello di prima ma in usando items() invece di keys()
e dando a izip_longest un valore di fallback custom

Ciao,
Federico

Il giorno mar 12 feb 2019 alle ore 14:01 Michele Orrù <lists a tumbolandia.net>
ha scritto:

> On 2/12/19 1:51 PM, Gabriele Battaglia wrote:
> > Ciao a tutti.
> > Se ho un ciclo che sta iterando sulle chiavi di un dizionario. Ho la
> > possibilità di conoscere la chiave successiva a quella a cui il ciclo è
> > arrivato?
> > Perdonate se non sono riuscito ad esprimermi bene... Se non è chiaro ci
> > provo con parole diverse.
> > Gabry.
>
>
>
> ciao
> non c'è nozione d'ordine sulle chiavi di un dizionario, ma puoi iterare
> le chiavi con
> for key in dict
>
> se hai bisogno di ordine ci sta ordereddict
>
> --
> https://www.youtube.com/watch?v=fhCLalLXHP4
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20190212/a49837fe/attachment.html>


Maggiori informazioni sulla lista Python