Obs: Ich weiß, dass Listen in Python nicht durch die Reihenfolge festgelegt sind, aber denke, dass dies eine sein wird. Und ich benutze Python 2.4
Ich habe eine Liste, wie zum Beispiel diese:
%Vor%Diese Variable mylist wird von einer Funktion erhalten, und die 'Reihenfolge' der zurückgegebenen Liste variiert. Manchmal wird es wie im Beispiel sein. Manchmal wird der "Bericht" vor "Artikel" usw. stehen.
Ich habe eine feste Reihenfolge, die ich auf dieser Liste haben möchte (und ist nicht alphabetisch).
Nehmen wir an, meine feste Bestellung lautet: 'Bericht', 'Artikel', 'Buch', ...
Also, was ich will, ist das: egal welche Reihenfolge 'Meine Liste' instanziiert wird, ich möchte sie neu anordnen, indem ich 'Bericht' auf der Vorderseite, 'Artikel' auf der zweiten Seite, etc ...
belasseWas ist der beste Ansatz, um meine Liste neu anzuordnen (indem ich das erste Element des Tupel jedes Elements auf der Liste nehme), indem ich meine "benutzerdefinierte" Reihenfolge verwende?
Antwort :
Ich bin damit gelandet:
Meine Liste wurde zu einer Liste von Diktaten, wie folgt:
%Vor%Jedes Diktat hat eine ID, die sortiert werden muss.
Speichern der richtigen Reihenfolge in einer ListeAktivieren der korrekten Reihenfolge in einer Liste:
%Vor%und machen:
%Vor%Sie könnten ein Wörterbuch verwenden, mit dem Sie auf "Buch", "Artikel" usw. zugreifen können, ohne sich um die Reihenfolge kümmern zu müssen. Ich würde die Daten aus dieser Liste in ein Diktat schreiben, das wie folgt aussieht:
%Vor% Wenn Sie Ihre Liste wirklich in der von Ihnen beschriebenen Weise sortieren möchten, können Sie list.sort
mit einer Schlüsselfunktion verwenden, die Ihre bestimmte Sortierreihenfolge darstellt ( Dokumentation ). Sie benötigen die Schlüsselfunktion, da Sie nur auf das erste Element zugreifen müssen und Ihre Sortierreihenfolge auch nicht alphabetisch ist.
Auf diese Weise wird ein Diktat erstellt und die Elemente in der Reihenfolge abgerufen
%Vor%Auf diese Weise werden Sortiervorgänge mit O (1) Suchvorgängen für die Reihenfolge
verwendet %Vor%