2012-02-27 10 views

risposta

1

Questo non è possibile. Puoi ottenere solo una rappresentazione ordinata di un titolo come stai ricevendo.


Modifica

appena fatto qualche ricerca. Sembra che Python 2.7 abbia qualcosa chiamato OrderedDict, che ti permetterebbe di farlo. Ecco ulteriori informazioni a riguardo: http://docs.python.org/library/collections.html?highlight=ordereddict#ordereddict-examples-and-recipes

+0

Ah, vedo, sono solo in anticipo sui tempi: D Troppo male, sto usando 2.5 per ragioni di hosting. Sto solo andando a cambiare il mio codice per accettare la lista, invece. – ofko

8

Gli oggetti standard dict non sono ordinati e quindi non garantiscono o conservano alcun ordine. Questo perché poiché di solito si usa un comando per ottenere un valore per un ordine delle chiavi non è importante.

Se si desidera conservare l'ordine è possibile utilizzare an OrderedDict. Questo non è ordinato ma ricorda l'ordine in cui gli oggetti vengono aggiunti ad esso. Così è possibile crearne uno utilizzando le coppie di valori chiave in modo ordinato:

>>> d = {"a":4, "b":12, "c":2} 
>>> from collections import OrderedDict 
>>> od = OrderedDict(sorted(d.items(), key=lambda(k,v):(v,k))) 
>>> od 
OrderedDict([('c', 2), ('a', 4), ('b', 12)]) 
1

Come molti altri hanno sottolineato si può non come python non consente di farlo (se non con dicts ordinate). Cosa si potrebbe implementare in ogni caso è qualcosa di simile (python < 2,7)

>>> d = {"a":4, "b":12, "c":2} 
>>> z = [(i,d[i]) for i in d] 
>>> z.sort(key=lambda x: x[1]) 
>>> z 
[('c', 2), ('a', 4), ('b', 12)] 

E come ora d è ordinato è possibile eseguire una ricerca binaria su di esso per ottenere ciò che si vuole (o un'iterazione normale se si don' t troppo cura della velocità).