Verschachteltes OrderedDict nach Schlüssel rekursiv sortieren

8

Sage orig ist ein OrderedDict , das normale string: string Schlüsselwertpaare enthält, aber manchmal kann der Wert ein anderer, verschachtelter OrderedDict sein.

Ich möchte orig nach Schlüssel, alphabetisch (aufsteigend) und rekursiv sortieren.

Regeln:

  • Angenommen Schlüsselzeichenfolgen sind nicht vorhersehbar
  • Angenommen, die Verschachtelung kann unendlich, z.B. Level 1-50 haben alle Strings, OrderedDicts usw. als Werte.

Benötigen Sie eine Hilfe mit dem Algorithmus sorted :

%Vor%     
tester 28.03.2014, 19:29
quelle

3 Antworten

12

etwas wie:

%Vor%     
acushner 28.03.2014, 19:36
quelle
4

Sehr ähnlich zu @ acushners Lösung, aber klassenbasiert:

%Vor%

Verwendung:

%Vor%     
svvitale 17.07.2015 20:00
quelle
1

@ acushners Lösung kann nun in python3.6 + vereinfacht werden, da Wörterbücher jetzt ihre Reihenfolge beibehalten.

Wenn wir nun das Standardwörterbuch verwenden können, sieht der Code jetzt so aus:

%Vor%

Da wir Standardwörterbücher verwenden können, können wir auch Standardwörterbuchkomprehensionen verwenden, also läuft der Code auf:

hinaus %Vor%

Siehe auch Ссылка für Einzelheiten über die Implementierung von Pythons geordneten Wörterbuch. Auch die Aussage, dass dies ein Sprachmerkmal wie in Python 3.7 sein wird: Ссылка

    
pelson 19.12.2017 08:00
quelle