Heim >Backend-Entwicklung >Python-Tutorial >Können die Schlüssel eines Python-Wörterbuchs Tupel sein?

Können die Schlüssel eines Python-Wörterbuchs Tupel sein?

silencement
silencementOriginal
2019-06-17 15:01:5028336Durchsuche

Können die Schlüssel eines Python-Wörterbuchs Tupel sein?

Schlüssel des Python-Wörterbuchs

Die Werte im Wörterbuch unterliegen keinen Einschränkungen und können jedes Python-Objekt sein, also Standardobjekte Objekte in benutzerdefiniert umwandeln. Jedes Objekt ist akzeptabel, aber die Schlüssel im Wörterbuch unterliegen einer Typbeschränkung.

Erlaubt nicht, dass ein Schlüssel mehreren Werten entspricht

Ein Grundsatz muss klargestellt werden: Jeder Schlüssel kann nur einem Element entsprechen. Mit anderen Worten: Mehrere Werte, die einem Schlüssel entsprechen, sind nicht zulässig (Containerobjekte wie Listen, Tupel und andere Wörterbücher sind zulässig). Wenn ein Schlüsselkonflikt vorliegt (d. h., einem Wörterbuchschlüssel wird wiederholt ein Wert zugewiesen), wird die letzte (aktuellste) Zuweisung übernommen. Python generiert keinen Fehler aufgrund widersprüchlicher Schlüssel im Wörterbuch. Es führt keine Prüfung auf Schlüsselkonflikte durch, da dies sonst bei jeder Schlüssel-Wert-Paar-Zuweisung erfolgen würde, was eine gewisse Zeit in Anspruch nehmen würde Erinnerung.

>>> dict1 = {'foo':789, 'foo': 'xyz'} 
>>> dict1 
{'foo': 'xyz'} 
>>> dict1['foo'] = 123
>>> dict1 
{'foo': 123}

Schlüssel müssen hashbar sein

Die meisten Python-Objekte können als Schlüssel dienen, aber es müssen hashbare Objekte sein. Veränderbare Typen wie Listen und Wörterbücher können nicht als Schlüssel verwendet werden, da sie nicht hashbar sind. Alle unveränderlichen Typen sind hashbar und können daher als Wörterbuchschlüssel verwendet werden. Es ist zu beachten, dass Zahlen mit gleichen Werten denselben Schlüssel darstellen, dh die Hashwerte der Ganzzahl 1 und der Gleitkommazahl 1,0 sind gleich und sie sind derselbe Schlüssel.

Gleichzeitig gibt es (selten) einige veränderliche Objekte, die hashbar sind und als Wörterbuchschlüssel verwendet werden können, aber sie sind selten. Nehmen Sie zum Beispiel eine Klasse, die die spezielle Methode __hash__() implementiert. Da die Methode __hash__() eine Ganzzahl zurückgibt, wird weiterhin ein unveränderlicher Wert verwendet (als Wörterbuchschlüssel). Warum müssen Schlüssel hashbar sein? Der Interpreter ruft eine Hash-Funktion auf, um basierend auf dem Wert des Schlüssels im Wörterbuch zu berechnen, wo Ihre Daten gespeichert werden sollen. Wenn der Schlüssel ein veränderliches Objekt ist, kann sich sein Wert ändern. Wenn sich der Schlüssel ändert, wird die Hash-Funktion einer anderen Adresse zugeordnet, um die Daten zu speichern. In diesem Fall kann die Hash-Funktion die relevanten Daten nicht zuverlässig speichern oder abrufen. Der Grund für die Wahl von Hash-Schlüsseln liegt darin, dass ihre Werte nicht geändert werden können.

Zum Beispiel

d = {('a','b'):(3,7)}

Das obige Beispiel verwendet Tupel als Schlüssel des Wörterbuchs. Sie können sehen, dass kein Fehler gemeldet wird, was darauf hinweist, dass Tupel auch als Schlüssel des Wörterbuchs verwendet werden können.

Zahlen und Zeichenfolgen können als Wörterbuchschlüssel verwendet werden. Tupel sind unveränderlich, aber möglicherweise nicht unveränderlich. Daher muss die Verwendung von Tupeln als gültige Schlüssel eingeschränkt werden: Wenn Tupel nur unveränderliche Parameter wie Zahlen und Zeichenfolgen enthalten als gültige Schlüssel im Wörterbuch.

Das obige ist der detaillierte Inhalt vonKönnen die Schlüssel eines Python-Wörterbuchs Tupel sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn