Python: Wie kann ich eine Liste individuell bestellen?

Obs: Ich weiß, dass Listen in Python nicht in der Reihenfolge festgelegt sind, aber ich denke, dass dies der Fall sein wird. Und ich benutze Python 2.4

Ich habe eine Liste, wie zum Beispiel diese:

mylist = [ ( u'Article', {"...some_data..."}    ) ,
           ( u'Report' , {"...some_data..."}    ) ,
           ( u'Book'   , {"...another_data..."} ) ,
...#continue
]

Diese variable Liste wird aus einer Funktion abgerufen, und die Reihenfolge der zurückgegebenen Liste variiert. So wird es manchmal wie am Beispiel sein. Manchmal kommt der 'Bericht' vor 'Artikel' usw.

Ich habe eine feste Reihenfolge, die ich auf dieser Liste haben möchte (und die nicht alphabetisch ist).

Angenommen, meine feste Reihenfolge lautet: 'Bericht', 'Artikel', 'Buch', ...

So, was ich will ist, dass: was auch immer der Befehl 'mylist' instanziiert ist, ich möchte ihn neu anordnen, so dass 'Report' vorne bleibt, 'Article' an zweiter Stelle, etc ...

Was ist die beste Methode, um meine Liste neu zu ordnen (wobei das erste Element des Tupels jedes Elements in der Liste verwendet wird), wenn ich meine "benutzerdefinierte" Bestellung verwende?

Antworte:

Ich endete mit diesem:

mylist wurde eine Liste von Dikten, wie folgt:

mylist = [{'id':'Article', "...some_data..."} ,
        ...etc
]

Jedes Diktat hat eine 'ID', die sortiert werden musste.

Speichern der korrekten Reihenfolge in einer ListeZuweisen der korrekten Reihenfolge in einer Liste:

correct_order = ['Report', 'Article', 'Book', ...]

and doing:

results = sorted([item for item in results], cmp=lambda x,y:cmp(correct_order.index(x['id']), correct_order.index(y['id'])))

Antworten auf die Frage(8)

Ihre Antwort auf die Frage