So che ci sono tonnellate di domande sugli elenchi/dizionari di Python già, ma non riesco a trovarne uno che aiuti nel mio caso, e sto cercando la soluzione più efficiente come Sto per ordinare un set di dati piuttosto grande.Ordinamento di un dizionario di tuple in Python
I miei dati appare fondamentalmente come questo al momento:
a = {'a': (1, 2, 3), 'b': (3, 2, 1)}
sto fondamentalmente la creazione di un elenco di parole in cui memorizzare ogni parola insieme ad alcune statistiche su di esso (n, Sigma (x), Sigma (x^2))
Voglio ordinarlo in base a una particolare statistica. Finora ho cercato qualcosa sulla falsariga di:
b = a.items()
b.sort(key = itemgetter(1), reverse=True)
io non sono sicuro di come controllare quale indice è ordinato basa su quando il suo modo efficace una lista di tuple di tuple? Immagino di dover effettivamente nidificare due operazioni itemgetter ma non sono sicuro di come farlo.
Se c'è una struttura dati migliore che dovrei usare, per favore fatemelo sapere. Dovrei forse creare una piccola classe/struct e quindi usare una funzione lambda per accedere a un membro della classe?
Molte grazie
sì, perfetto, grazie! Tuttavia ho letto da qualche parte che itemgetter è più veloce di usare una funzione lambda perché è compilata la sua C? Se non riesco a usare itemgetter, questa soluzione va bene comunque. –
Non preoccuparti delle prestazioni finché non hai un programma funzionante, completo di test delle unità. Se il finale, * correct *, il programma è troppo lento, quindi profilalo e ottimizza i bit lenti. –
buon punto :) Potrei riscriverlo in C se è troppo lento comunque, grazie per i puntatori :) –