Angenommen, ich habe das folgende Wörterbuch und die Liste:
%Vor%Gibt es einen direkten (pythonischen) Weg, die Schlüssel / Wert-Paare aus dem Wörterbuch zu entfernen, für die die Schlüssel Elemente in der Liste sind, in einer Reihenfolge, die durch die Listenreihenfolge definiert ist?
Der naive Ansatz besteht darin, einfach über die Liste zu iterieren und die Werte in der Karte einzeln herauszuziehen, aber ich frage mich, ob Python das Äquivalent zum Listen-Slicing für Wörterbücher hat.
Weiß nicht, ob Python genug ist, aber das funktioniert:
%Vor%Dies ist ein Listenverständnis , aber wenn Sie diese Liste nur einmal durchlaufen müssen Sie können es auch in einen Generatorausdruck umwandeln, z :
%Vor%Natürlich funktionieren die vorherigen Methoden nur, wenn alle Elemente in der Liste im Wörterbuch vorhanden sind; Um den Schlüssel-nicht-Gegenwart-Fall zu berücksichtigen, können Sie dies tun:
%Vor% Wie wäre es damit? Nimm jedes Element in my_list
und gib es an die Methode get
des Wörterbuchs weiter. Es behandelt auch Ausnahmen um fehlende Schlüssel, indem sie durch None
ersetzt werden.
Wenn du tupples zip
it willst -
Wenn Sie ein neues Diktat wünschen, übergeben Sie das Tupel an dict.
%Vor%Ein direkter Weg wäre, jedes Element aus dem Wörterbuch auszuwählen und zu prüfen, ob der Schlüssel in der Liste vorhanden ist.
%Vor%Die obige Suche würde linear sein, so dass Sie durch die Umwandlung der Liste in set
etwas an Leistung gewinnen könnten %Vor%Und schließlich, wenn Sie ein Wörterbuch anstelle einer Liste von Schlüsseln benötigen, können Wertpaartupel das Wörterbuchverständnis verwenden
%Vor%Tags und Links python