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?
Verwenden Sie eine OrderedDict
, da ein normales Wörterbuch die Reihenfolge ihrer Elemente beim Überfahren. Hier ist wie:
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
speichertEtwas 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.
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.
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
.
def dictionarySortingExample (yourDictionary):
%Vor%sampleDictionary = {4: "vier", "Cranberry": 2, 3: "drei", 2: "zwei", "Apple": 3, 1: "eins", "Bananna": 1} dictionarySortingExample (Beispielwörterbuch)
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.
Tags und Links python