У меня есть collections.OrderedDict
со списком пар ключей, значений. Я хотел бы вычислить индекс i
так, что i
-й ключ соответствует заданному значению. Например:Получение ключевого индекса в Python OrderedDict?
food = OrderedDict([('beans',33),('rice',44),('pineapple',55),('chicken',66)])
Я хочу, чтобы перейти от ключа chicken
к индексу 3, или от ключа rice
к индексу 1. Я могу сделать это сейчас с
food.keys().index('rice')
но есть каким-либо образом использовать способность OrderedDict
быстро просмотреть информацию по ключевому названию? Иначе кажется, что поиск индекса будет O (N), а не O (log N), и у меня много элементов.
Я предполагаю, что это можно сделать вручную, сделав свой собственный индекс:
>>> foodIndex = {k:i for i,k in enumerate(food.keys())}
>>> foodIndex
{'chicken': 3, 'rice': 1, 'beans': 0, 'pineapple': 2}
, но я надеялся, что там может быть что-то встроенное в качестве OrderedDict
.
Вы можете сделать это, но оно не будет храниться в синхронизации, если вы добавите и/или удалите элементы. – BrenBarn