Ho un collections.OrderedDict
con un elenco di coppie chiave, valore. Vorrei calcolare l'indice i
in modo che la chiave i
corrisponda a un determinato valore. Per esempio:ottenendo l'indice chiave in un OrderedDict Python?
food = OrderedDict([('beans',33),('rice',44),('pineapple',55),('chicken',66)])
voglio andare dalla chiave chicken
all'indice 3, o dal tasto rice
all'indice 1. posso fare questo ora con
food.keys().index('rice')
ma c'è un modo per sfruttare la capacità di OrderedDict
di cercare rapidamente le cose per nome della chiave? Altrimenti sembra che la ricerca dell'indice sia O (N) piuttosto che O (log N), e ho molti articoli.
Suppongo che posso farlo manualmente facendo il mio proprio indice:
>>> foodIndex = {k:i for i,k in enumerate(food.keys())}
>>> foodIndex
{'chicken': 3, 'rice': 1, 'beans': 0, 'pineapple': 2}
ma speravo ci potrebbe essere qualcosa di costruito in un OrderedDict
.
È possibile farlo, ma non verrà mantenuto sincronizzato se si aggiungono e/o si rimuovono elementi. – BrenBarn