Recentemente mi sono imbattuto in un codice Java che semplicemente ha messo alcune stringhe in un TreeSet Java, implementato un comparatore basato sulla distanza per esso, e poi ha fatto la sua strada verso il tramonto per calcolare un determinato punteggio per risolvere il problema dato.Equivalente TreeSet Java in Python?
mie domande,
Esiste una struttura di dati equivalente disponibile per Python?
- Il set di alberi Java sembra fondamentalmente un dizionario ordinato che può utilizzare un comparatore di qualche tipo per ottenere questo ordine.
Vedo che c'è un PEP for Py3K per un OrderedDict, ma sto usando 2.6.x. Ci sono un sacco di implementazioni di dict ordinate là fuori - qualcuno in particolare che può essere raccomandato?
PS, Giusto per aggiungere - ho potuto probabilmente importare DictMixin o UserDict e realizzare il mio dizionario propria ordinato/ordinato, e farlo accadere attraverso una funzione di confronto - ma che sembra essere eccessivo.
Grazie.
Aggiornamento
. Grazie per le risposte. Per elaborare un po ', consente di dire ho una funzione di confronto i thats definita come, (dato un particolare valore ln),
def mycmp(x1, y1, ln):
a = abs(x1-ln)
b = abs(y1-ln)
if a<b:
return -1
elif a>b:
return 1
else:
return 0
Sono un po' incerto su come mi piacerebbe integrare questo in ordine data nel comando ordinato link given here...
Qualcosa di simile,
OrderedDict(sorted(d.items(), cmp=mycmp(len)))
idee sarebbe il benvenuto.
Si noti che 'OrderedDict' non è come' TreeMap' Javas'. Ordinato qui significa che gli elementi sono ordinati per tempo di inserimento. Non è quello che vuoi. Fondamentalmente stai cercando un set implementato tramite alberi di ricerca binari. – Albert