Wie kann man auf das erste und letzte Element in einem Wörterbuch-Python zugreifen?

8

Vor dem Posten habe ich bereits Zugriff auf ein beliebiges Element in einem Wörterbuch in Python , aber ich bin unsicher.

Ich habe ein langes Wörterbuch und ich muss die Werte seiner ersten und letzten Tasten abrufen. Ich kann dict[dict.keys()[0]] und dict[dict.keys()[-1]] verwenden, um das erste und letzte Element zu erhalten, aber da die Schlüssel: Wert-Paare in zufälliger Form ausgegeben werden (wie bei der Positionierung des Schlüssels: Wertpaare sind zufällig), wird die Lösung bereitgestellt in diesem Link immer arbeiten?

    
PythonEnthusiast 26.09.2013, 13:51
quelle

6 Antworten

16

Verwenden Sie eine OrderedDict , da ein normales Wörterbuch die Reihenfolge ihrer Elemente beim Überfahren. Hier ist wie:

%Vor%     
Óscar López 26.09.2013, 13:59
quelle
1

Es gibt im Wörterbuch keine "erste" oder "letzte" Taste, was keine bestimmte Reihenfolge garantiert. Es gibt also keine Möglichkeit das "erste" oder "letzte" Element zu erhalten. Sie können nur einen eigenen Wrapper um python dict erstellen, der die Informationen über "first" und "last" Objekt

speichert

Etwas wie

%Vor%

Wie bereits im Kommentar erwähnt, gibt es bereits eine Klasse OrderedDict : Ссылка

  

Bestellte Wörterbücher sind wie normale Wörterbücher, aber sie erinnern sich   die Reihenfolge, in der die Artikel eingefügt wurden. Beim Iterieren über eine Bestellung   Wörterbuch werden die Elemente in der Reihenfolge zurückgegeben, in der ihre Schlüssel zuerst waren   hinzugefügt.

    
lejlot 26.09.2013 13:54
quelle
1

Python-Wörterbücher sind ungeordnet, daher sind "erste" und "letzte" nicht definiert. Stattdessen können Sie Ihre Schlüssel sortieren und dann auf das Element zugreifen, das mit dem ersten und letzten Schlüssel in Ihrer sortierten Menge verknüpft ist.

BEARBEITEN:

Das OP hat klargestellt, dass mit "first" und "last" die Reihenfolge gemeint ist, in der dem Wörterbuch Schlüssel hinzugefügt wurden. collections.OrderedDict sollte für diesen Fall funktionieren.

    
Codie CodeMonkey 26.09.2013 13:53
quelle
0
  

CPython-Implementierungsdetail: Schlüssel und Werte werden in einer willkürlichen Reihenfolge aufgeführt, die nicht zufällig ist, in Python-Implementierungen variiert und vom Einfüge- und Löschungsverlauf des Wörterbuchs abhängt. - dict Dokumentation

Ich empfehle jedoch dringend, sich nicht auf die Reihenfolge der Elemente in der assoziativen Anordnung Datenstruktur zu verlassen (dict ist eine davon). da es häufig keinen einzigen offensichtlichen Weg gibt, Schlüssel zu bestellen. Zum Beispiel in Python "21" < "3" während 21 > 3 .

    
Vladimir 26.09.2013 13:56
quelle
0

def dictionarySortingExample (yourDictionary):

%Vor%

Beispiel Wörterbuch Sortierung

sampleDictionary = {4: "vier", "Cranberry": 2, 3: "drei", 2: "zwei", "Apple": 3, 1: "eins", "Bananna": 1} dictionarySortingExample (Beispielwörterbuch)

    
Stonewall_Jefferson 26.09.2013 14:30
quelle
0

Wenn Sie mit Python 3.6+ arbeiten, können Sie einen einzigen Liner erstellen:

Erstens:

%Vor%

Zuletzt:

%Vor%

Dies ist der Fall, weil das Standardwörterbuch von Python 3.6+ die Reihenfolge der Einfügungen beibehält.

    
juan Isaza 01.06.2017 23:44
quelle

Tags und Links