2009-03-17 22 views
13

LinkedHashMap ist die Java-Implementierung einer Hashtable-ähnlichen Datenstruktur (dict in Python) mit vorhersagbarer Iterationsreihenfolge. Das bedeutet, dass sie während eines Durchlaufs über alle Schlüssel durch Einfügen geordnet werden. Dies wird durch eine zusätzliche verknüpfte Liste erreicht, die den Anzeigenauftrag verwaltet.Äquivalent für LinkedHashMap in Python

Gibt es ein Äquivalent zu Python?

Antwort

10

Obwohl Sie dasselbe tun können, indem Sie eine Liste verwalten, um den Anzeigenauftrag zu verfolgen, haben und Python >=3.1 eine OrderedDict-Klasse im Auflistungsmodul.

Vor 2.7 können Sie die Unterklasse dictfollowing this recipe ableiten.

+0

Das OrderedDict kommt in Python 3.1, ist aber laut der Dokumentation, die Sie verlinkt haben, noch nicht in 3.0. – kquinn

+0

Ja, du hast Recht, ich hatte das übersehen. Bearbeitet. – sykora

1

Ich denke nicht so; Sie müssten ein Diktat plus eine Liste verwenden. Aber Sie könnten das in einer Klasse ziemlich leicht wickeln und keys, __getitem__, __setitem__, usw. definieren, um es zu arbeiten, wie Sie wollen.

2

Ich bin nicht sicher, ob dies ist, was Sie fordern:

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

Sie die dic in der Reihenfolge des Einführungs ordereddict Modul bestellen können.

d = ordereddict(dic, relax=True) 
+0

Ich glaube nicht, dass '' dict.iteritems'' eine Reihenfolge basierend auf der Reihenfolge des Einfügens bietet ... – sykora

+0

Richtig! Sie müssen dafür das Modul "Ordereddict" verwenden. – aatifh