Angenommen, ich hätte eine Liste wie folgt:
%Vor%Ist es möglich, aus dieser Liste das folgende dict ohne mit Rekursion / einer rekursiven Funktion zu erstellen?
%Vor%Für den einfachen Fall, einfach iterieren und bauen, entweder vom Ende oder vom Anfang:
%Vor%oder
%Vor% Die erste Lösung kann auch mit reduce()
als Einzeiler ausgedrückt werden:
Es ist erwähnenswert, dass jede Rekursion in Iteration konvertiert werden kann , obwohl das manchmal nicht so einfach ist. Für das spezielle Beispiel in der Frage ist einfach , es ist nur eine Frage des Ansammelns des erwarteten Ergebnisses in einer Variablen und des Durchlaufen der Eingabeliste in der richtigen Reihenfolge. Das meine ich:
%Vor% Oder noch kürzer, der obige Algorithmus kann als ein Einzeiler ausgedrückt werden (angenommen Python 2.x, in Python 3.x reduce
wurde in das functools
-Modul verschoben. . Beachten Sie, wie die Variablennamen in der vorherigen Lösung den Lambda-Parametern entsprechen und wie in beiden Fällen der Anfangswert des Akkumulators {}
:
Wie auch immer funktioniert die Funktion convert
wie erwartet:
Tags und Links python list dictionary recursion iteration