Ich versuche, eine nette Schnittstelle zu schaffen, um auf einen Datensatz zuzugreifen, wo jeder Wert mehrere mögliche Schlüssel hat. Nehmen wir zum Beispiel an, dass ich sowohl einen Nummer als auch einen Namen für jeden Wert im Datensatz habe. Ich möchte in der Lage sein, auf jeden Wert entweder mit der Zahl ODER dem Namen zuzugreifen.Wörterbücher mit mehr als einem Schlüssel pro Wert in Python
Ich habe als mehrere mögliche Implementierungen:
Verwendung von zwei separaten Wörterbücher, ein für die Datenwerte nach Anzahl organisiert, und eine für die Datenwerte nach Namen organisiert.
Einfach zwei Schlüssel dem gleichen Wert in einem Wörterbuch zuweisen.
Erstellen Wörterbücher jede Namenszuordnung zu der entsprechenden Anzahl und vice versa
Versuch, eine Hash-Funktion zu erstellen, die jeden Namen auf eine Zahl abbildet, usw. (bezogen auf die oben)
Erstellen eines Objekts zum Verkapseln aller drei Datenelemente, dann Verwenden eines Schlüssels zum Zuordnen von Wörterbuchschlüsseln zu den Objekten und Durchsuchen des Wörterbuchs, um den anderen Schlüssel dem Objekt zuzuordnen.
Keines scheint ideal. Das erste scheint hässlich und nicht zu halten. Die zweite scheint ebenfalls fragil. Das dritte/vierte scheint plausibel, scheint aber entweder eine sehr manuelle Spezifikation oder eine zu komplexe Implementierung zu erfordern. Schließlich verliert der fünfte die konstante Zeitleistung für eines der Nachschlagevorgänge.
In C/C++ glaube ich, dass ich Zeiger verwenden würde, um das gleiche Stück Daten von verschiedenen Schlüsseln zu referenzieren.
Ich weiß, dass das Problem ähnlich zu einem Datenbank-Lookup-Problem durch eine Nicht-Schlüsselspalte ist, jedoch möchte ich (wenn möglich) die ungefähre O (1) Leistung von Python-Wörterbüchern beibehalten.
Was ist der pythonischste Weg, um diese Datenstruktur zu erreichen?