33 Stimmen

Äquivalent für LinkedHashMap in Python

LinkedHashMap ist die Java-Implementierung einer Hashtable-ähnlichen Datenstruktur (dict in Python) mit vorhersehbarer Iterationsreihenfolge. Das bedeutet, dass bei einer Traversierung über alle Schlüssel diese nach Einfügung geordnet werden. Dies geschieht durch eine zusätzliche verknüpfte Liste, die die Einfügereihenfolge beibehält.

Gibt es dafür eine Entsprechung in Python?

27voto

Eli Courtwright Punkte 174547

Wenn Sie mit Python 2.7 oder Python >=3.1 arbeiten, können Sie collections.OrderedDict in der Standardbibliothek.

Diese Antwort auf die Frage Wie können Sie Elemente aus einem Wörterbuch in der Reihenfolge abrufen, in der sie eingefügt wurden? enthält eine Implementierung eines geordneten Diktats, für den Fall, dass Sie nicht Python 3.x verwenden und sich nicht in eine Abhängigkeit von dem Drittanbieter Auftragsdiktat-Modul .

12voto

sykora Punkte 88704

Sie können jedoch auch eine Liste führen, um die Einfügereihenfolge zu verfolgen, Python 2.7 et Python >=3.1 haben eine OrderedDict-Klasse im Collections-Modul.

Vor 2.7 können Sie die Unterklasse dict nach diesem Rezept .

3voto

aatifh Punkte 2262

Ich bin mir nicht sicher, ob es das ist, wonach Sie fragen:

>>> dic = {1: 'one', 2: 'two'}
>>> for k, v in dic.iteritems():
...     print k, v

können Sie die dic in der Reihenfolge des Einfügens mit Bestelldiktat Modul.

d = ordereddict(dic, relax=True)

2voto

Isa Kilikya Punkte 173

Zusätzlich zu dem validierten Kommentar;

Ab Python 3.7, dict behält die Einfügereihenfolge bei.

Diese Antwort zeigt dies im Detail.

1voto

DNS Punkte 35625

Ich glaube nicht; Sie müssten ein Diktat plus eine Liste verwenden. Aber Sie könnten das ziemlich einfach in eine Klasse verpacken und definieren keys , __getitem__ , __setitem__ usw., damit es so funktioniert, wie Sie es wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X