Ich habe einen Anwendungsfall, wo ich Dinge, die sowohl einen Schlüssel und Daten enthalten. Ich möchte eine effiziente Codierung dieser Daten und der dict-Index der Daten. So ist Sache eine Klasse, und Wörterbuch ist ein dict Index seiner Instanzen:Speichereffiziente dicts - Ableiten eines Artikels Schlüssel von seinem Wert
d = {}
class Thing:
def __init__(k,v): self.key=k; self.data=v; d[v]=self
Nun würde Ich mag Sache in meinem Code wie gezeigt um Objekte zu übergeben ein einzelnes Objekt:
thing1, thing2 = d['thing1'], d['thing2']
Diese Lösung funktioniert. Ich kann Dinge nach Schlüssel indexieren, und ich kann einen Schlüssel von jedem Ding abrufen, aber beachten Sie, dass diese Lösungen Zeiger auf den Schlüssel sowohl im dict- als auch im Thing-Objekt redundant speichert.
Ich könnte 'dict' von Grund auf so implementieren, dass ich ihm sagen könnte, wie man vom Wert auf den Schlüssel zugreifen kann. Viele Hash-Methoden könnten daher das Speichern eines zweiten Zeigers auf den Schlüssel vermeiden.
Bietet eine der Python-dict-Implementierungen diese Flexibilität? Wenn Sie in der Lage zu behaupten, dies ist nicht möglich, würde ich es gerne hören. Danke.
HINWEIS: Der wichtige Punkt hier ist, dass später möchte ich sowohl Schlüssel und Daten als ein einzelnes Objekt mit einem einzigen Zeiger darauf behandeln, und ich möchte nicht Heap zuweisen ein Tupel, um dies zu erreichen, wie dies würde besiegen mein ursprüngliches Ziel.
Warum "print" nicht mein Schlüssel ist% s und Wert ist% s "% (k, obj)' ?? Sie können auf den Wert zugreifen, dann kennen Sie den Schlüssel und müssen ihn nicht ableiten. Wenn Sie einen Schlüssel von einem Wert erhalten möchten, möchten Sie eigentlich eine zweite Karte in der anderen Richtung erstellen. – JulienD