Ich habe einen Codeschnipsel, der ein Wörterbuch alphabetisch sortiert. Gibt es eine Möglichkeit, den i-ten Schlüssel im bestellten Wörterbuch auszuwählen und den entsprechenden Wert zurückzugeben? d. h.
%Vor%Ich möchte eine Funktion entlang der Ader von ...
haben %Vor%Wie kann dies erreicht werden? Danke.
(Ähnlich wie Zugriff auf Elemente in einem Ordereddict , aber ich möchte nur ausgeben der Wert des Schlüssel-Wert-Paares.)
In Python 2:
Wenn Sie auf den Schlüssel zugreifen möchten:
%Vor%Wenn Sie auf den Wert zugreifen möchten:
%Vor% Wenn Sie Python 3 verwenden, können Sie das von der Methode KeysView
zurückgegebene Objekt keys
konvertieren, indem Sie es als Liste umschließen:
Nicht die schönste Lösung, aber es funktioniert.
itertools.islice
ist hier effizient, weil wir es nicht müssen Erstellen Sie Zwischenlisten für Subskriptionen.
Wenn Sie nur den Wert möchten, können Sie
tun %Vor%Müssen Sie ein OrderedDict verwenden oder wollen Sie nur einen dict-ähnlichen Typ, der die Indizierung unterstützt? Wenn letzteres gilt, dann betrachte ein sortiertes dict-Objekt. Einige Implementierungen von SortedDict (die Paare basierend auf der Schlüsselsortierreihenfolge anordnet) unterstützen schnelle n-te Indizierung. Zum Beispiel hat das Projekt sortedcontainers eine SortedDict Typ mit Direktzugriffsindizierung.
In Ihrem Fall würde es ungefähr so aussehen:
%Vor%Wenn Sie viele Nachschlagevorgänge durchführen, ist dies viel schneller als das wiederholte Iterieren zum gewünschten Index.
Unterschätzen Sie nicht nur eine einfache 'ole für Schleife:
%Vor%Der Vorteil hierbei ist, dass die Schleife bricht, sobald das gewünschte Element gefunden wird, und ein vernünftiges Ergebnis zurückgibt, wenn sie nicht gefunden wird ...
Der Nachteil ist, dass relative Slices nicht unterstützt werden.
Tags und Links python python-3.x ordereddictionary