Java est TreeSet équivalent en Python?

Je suis récemment tombé sur certains de code Java qui a simplement mis quelques chaînes de caractères en Java TreeSet, mis en œuvre en fonction de la distance comparateur pour elle, et a ensuite fait son petit bonhomme de chemin dans le coucher du soleil pour le calcul d'un score donné pour résoudre le problème donné.

Mes questions,

  • Est-il un équivalent de la structure de données disponibles pour Python?
    • La Java treeset ressemble fondamentalement à un ordre dictionnaire pouvez utiliser un comparateur de quelque sorte pour réaliser cette commande.
  • Je vois une PEP pour Py3K pour un OrderedDict, mais je suis en utilisant 2.6.x. Il y a un tas de commandé dict implémentations de là - bas- toute personne en particulier qui peut être recommandé?

PS, il suffit d'ajouter - je pourrait probablement d'importation DictMixin ou UserDict et de mettre en œuvre mes propres trier/a ordonné dictionnaire, ET de la rendre possible, par le biais d'un comparateur de fonction - mais qui semble être exagéré.

Grâce.


Mise à jour. Merci pour les réponses. Pour développer un peu, disons que j'ai une fonction de comparaison c'est défini comme, (étant donné une valeur particulière 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

Je suis un peu incertain au sujet de comment je voudrais intégrer cela dans l'ordre donné dans la dict lien donné ici...

Quelque chose comme,

OrderedDict(sorted(d.items(), cmp=mycmp(len)))

Idées seraient les bienvenues.

Notez que OrderedDict n'est pas comme Javas TreeMap. Commandé ici signifie que les éléments sont classés par moment de l'insertion. Ce n'est pas ce que vous voulez. En gros, vous êtes à la recherche d'un ensemble mis en œuvre via des arbres binaires.

OriginalL'auteur viksit | 2010-04-26