Heim  >  Artikel  >  Backend-Entwicklung  >  Können die Schlüssel eines Python-Wörterbuchs eine Liste sein?

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

silencement
silencementOriginal
2019-06-17 14:45:0727968Durchsuche

Können die Schlüssel eines Python-Wörterbuchs eine Liste 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. Das heißt: 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 Zuweisung eines Schlüssel-Wert-Paares überprüft werden würde, was eine gewisse Zeit in Anspruch nehmen würde. Menge an Speicher.

>>> 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 sie 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.

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 das Tupel nur unveränderliche Parameter wie Zahlen und Zeichenfolgen enthält als gültige Schlüssel im Wörterbuch.

Das obige ist der detaillierte Inhalt vonKönnen die Schlüssel eines Python-Wörterbuchs eine Liste 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