Python: como encomendar uma lista personalizada?

Obs: Eu sei que as listas em python não são fixadas por ordem, mas acho que essa será. E eu estou usando Python 2.4

Eu tenho uma lista, como (por exemplo) esta:

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

Essa variável mylist é obtida de uma função e a 'ordem' da lista retornada varia. Então, às vezes será como no exemplo. Às vezes, o 'Relatório' vem antes de 'Artigo', etc.

Tenho uma ordem fixa que desejo nesta lista (e não é o alfabético).

Digamos que minha ordem fixa seja: 'Relatório', 'Artigo', 'Livro', ...

Então, o que eu quero é o seguinte: seja qual for a ordem que a minha lista for instanciada, eu quero reordená-la, fazendo o 'Relatório' ficar na frente, 'Artigo' na segunda, etc ...

Qual é a melhor abordagem para reordenar minha lista (usando o primeiro elemento da tupla de cada item da lista) usando meu pedido 'personalizado'?

Responda:

Eu acabei com isso:

mylist se tornou uma lista de dictos, assim:

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

cada ditado com um 'id' que precisava ser classificado.

Como salvar a ordem correta em uma listaComo atribuir a ordem correta em uma lista:

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

e fazendo:

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

questionAnswers(4)

yourAnswerToTheQuestion