@Programmatori Python. #Ordinare un dizionario. #ordinare


Gabriele Battaglia
 

Ciao.
Mi rivolgo a coloro che conoscono Python.
Devo risolvere questo problema ed ho questa situazione.

Un dizionario che ha la chiave rappresentata da un ID univoco, mentre il valore è una lista che contiene 47 elementi.
Alcuni di questi elementi sono degli interi.
Esiste un modo per ordinare le voci del dizionario usando l'ordine ascendente o discendente di uno di questi elementi della lista contenuta nel valore?
Grazie.
--
Gabriele Battaglia, IZ4APU (Libero)
Sent from TB on Windows 10, Genus Bononiae's computer.


Alberto Buffolino
 

Gabriele Battaglia via groups.io, il 06/12/2020 02.01, ha scritto:
Esiste un modo per ordinare le voci del dizionario usando l'ordine ascendente o discendente di uno di questi elementi della lista contenuta nel valore?
Alberto:
Ciao Gabry,
innanzitutto, dovrai usare un orderedDict, penso:
from collections import OrderedDict
d = OrderedDict()
altrimenti l'ordine delle chiavi non è affatto garantito.
Dopodiché, però, se anche ho capito la struttura:
d = {k1: [i1, i2, i3...], k2: [j1, j2, j3...], ...}
non capisco cosa intendi con "usando l'ordine ascendente o discendente di uno di questi elementi della lista". Potresti fare un esempio?
Alberto


Gabriele Battaglia
 

Reply to the Alberto Buffolino's message, wrote on 06/12/2020 at 09:15:
Gabriele Battaglia via groups.io, il 06/12/2020 02.01, ha scritto:
Esiste un modo per ordinare le voci del dizionario usando l'ordine ascendente o discendente di uno di questi elementi della lista contenuta nel valore?
Alberto:
Ciao Gabry,
Ciao Alberto e grazie per la risposta.
Inserisco fra il quoting.

innanzitutto, dovrai usare un orderedDict, penso:
from collections import OrderedDict
d = OrderedDict()
altrimenti l'ordine delle chiavi non è affatto garantito.
Uhm, sei sicuro di questa cosa?
A quanto ho capito io, gli ordered_dict sono eprecated da una certa release di Python3 in poi in quanto tutti i dizionari adesso mantengono stabile l'ordine di inserimento delle chiavi, ma potrei sbagliare.

Dopodiché, però, se anche ho capito la struttura:
d = {k1: [i1, i2, i3...], k2: [j1, j2, j3...], ...}
Struttura ok.

non capisco cosa intendi con "usando l'ordine ascendente o discendente di uno di questi elementi della lista". Potresti fare un esempio?
Si, mi piacerebbe poter ricavare una lista di chiavi, ordinata da quella che contiene l'elemento i (n) ad un determinato valore in giù.
Metti che la chiave del dizionario siano nomi e cognomi di clienti e la lista contenga una serie di dati che riguardano il singolo cliente. Metti che uno di questi dati indichi quanti giorni sono trascorsi da che quel cliente ha effettuato l'ultima transazione con me ed io voglia visualizzare in ordine cronologico gli ultimi 10 con cui ho avuto una transazione.
Vorrei una lista di chiavi il cui primo elemento sarà il cliente con il numero di giorni trascorsi dall'ultima transazione, più basso e via così per i successivi 9.
Non è facile, almeno per me, scrivere un algoritmo di questo genere, più probabilmente credo che Python offra degli strumenti per farlo, che però non conosco.

Tu come affronteresti?
Gabry.