Zugriff auf einen Wörterbuchwert über benutzerdefinierte Objektwerte in Python?

7

Ich habe also ein Quadrat, das aus einer Reihe von Punkten besteht. An jedem Punkt gibt es einen entsprechenden Wert.

Was ich tun möchte, ist ein Wörterbuch wie folgt zu erstellen:

%Vor%

Wenn ich jedoch später ein neues Punktobjekt erstelle und versuche, mit dem Schlüssel dieses Punktes auf den Wert des Wörterbuchs zuzugreifen, funktioniert es nicht.

%Vor%

Ich vermute, dass dies daran liegt, dass Python zwei Objekte mit denselben Eigenschaften nicht als das selbe Objekt betrachtet? Gibt es einen Weg dazu? Danke

    
Sam 09.04.2010, 03:12
quelle

4 Antworten

12

Definieren Sie Point.__hash__() und Point.__eq__() , damit sie innerhalb von Dicts richtig verglichen werden können.

Und wenn Sie gerade dabei sind, überlegen Sie, Point.__repr__() so zu definieren, dass Sie es erhalten anständig aussehende Darstellungen Ihrer Point Objekte.

    
Ignacio Vazquez-Abrams 09.04.2010, 03:15
quelle
5

Ja, definieren Sie die Methoden __eq__ und __hash__ für Ihre Point-Klasse.

%Vor%     
David 09.04.2010 03:17
quelle
2

Jeder Grund, nicht nur ein Tupel zu verwenden:

%Vor%     
Mark Tolonen 09.04.2010 03:32
quelle
2

Schritte: Implementieren Sie eine benutzerdefinierte Schlüsselklasse und überschreiben Sie die Hash- und Gleichheitsfunktion.

z.B.

%Vor%

Hauptmethode

%Vor%

Lesen Sie den Artikel Verwenden der benutzerdefinierten Klasse als Schlüssel im Python-Wörterbuch für vollständige Details.

    
Manpreet Singh 26.05.2015 12:16
quelle

Tags und Links