Um einen Teil der Frage zu Datentypen zu beantworten: In einem allgemeinen Sinn ist der Datentyp, der am besten geeignet ist, Dinge in O (log n) -Zeit zu finden (während O (1) bei Einfügungen und Löschungen erhalten bleibt!) . Sie können Dinge darin finden, indem Sie eine Reihe von Links-Rechts-Entscheidungen treffen, was sehr analog zu einer binären Suche in einer linearen Liste ist, aber (IMO) etwas konzeptuell intuitiver ist.
Das heißt, von dem, was ich von Python weiß, scheinen Binärbäume nicht in der Standardbibliothek der Sprache zu sein. Für Ihre Anwendung würde es wahrscheinlich keinen Vorteil geben, eine Implementierung nur für diesen Zweck zu integrieren.
Schließlich können Sie in einer sortierten Liste sowohl die Binärbäume als auch die Binärsuche verwenden, um die Suche um einen Schritt zu verkürzen: Es ist nicht notwendig, nach dem Schlüsselelement zu suchen und dann zu seinem Vorgänger zurückzukehren. Verwenden Sie stattdessen bei jedem Vergleichsschritt so, als ob der Schlüsselwert zu groß wäre. Dies führt dazu, dass Ihre Suche auf dem nächstkleineren Wert endet. Sorgfältig ausgeführt, kann dies auch bei dem von Bart angesprochenen "fast equal floating point value" Problem helfen.
Binary Search: http://en.wikipedia.org/wiki/Binary_search_algorithm –