Python: Wie Benutzerdefiniert, um eine Liste?

Obs: ich kenne die Listen in python sind von der Reihenfolge fest, aber denke das wird werden.
Und ich bin mit Python 2.4

Habe ich eine Liste, die wie (zum Beispiel) diesen:

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

Diese variable mylist ist, erhalten aus einer Funktion und den 'Auftrag' von der Liste zurückgegeben wird, variieren. Also, manchmal wird es wie auf dem Beispiel. Manchmal, den 'Bericht' kommen vor 'Artikel', etc.

Habe ich eine Feste Reihenfolge, die ich möchte, auf dieser Liste (und nicht alphabetisch).

Lassen Sie uns sagen, dass meine Feste Reihenfolge ist: 'Report', 'Artikel', 'Buch', ...

So, was ich will, ist: was um 'mylist' instanziiert wird, möchte ich es neu anordnen macht 'Bericht' Aufenthalt auf der front, 'Artikel' auf den zweiten, etc...

Was ist der beste Ansatz zum Sortieren meiner Liste (wobei das erste element des Tupels der einzelnen Artikel auf der Liste) mit meinem "custom" bestellen?

Antwort:

Landete ich mit diesem:

mylist wurde eine Liste von dicts, wie diese:

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

jeder dict-mit einer 'id', die mussten sortiert werden.

Speichern der richtigen Reihenfolge auf ein listAssigning die correct_order auf eine Liste:

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

haben und tun:

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