Доступ к значению словаря по индексу в python
Я хотел бы получить значение по ключевому индексу из словаря Python. Есть ли способ получить что-то вроде этого?
dic = {}
value_at_index = dic.ElementAt(index)
где index
- целое число
P.S. Задаваемый вопрос означает отсутствие какого-либо понимания, особенно если это новый язык, и для чего нужен downvoting, приятели?:(
ElementAt
широко используется в С# Linq
Ответы
Ответ 1
Стандартные словари Python по своей сути неупорядочены, поэтому то, что вы просите сделать, на самом деле не имеет смысла.
Если вы действительно знаете, что вы делаете, используйте
value_at_index = dic.values()[index]
Помните, что добавление или удаление элемента может потенциально изменить индекс каждого другого элемента.
Ответ 2
Если вы действительно хотите получить случайное значение из доступного диапазона ключей, используйте random.choice
для значений словаря (преобразуется в форму списка, если Python 3).
>>> from random import choice
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>>> choice(list(d.values()))
Ответ 3
Пока вы можете сделать
value = d.values()[index]
Лучше делать
value = next( v for i, v in enumerate(d.itervalues()) if i == index )
edit: я просто приурочил его, используя опцию len 100 000 000, проверяющую индекс в самом конце, а версия 1st/values () заняла 169 секунд, тогда как для версии 2nd/next() потребовалось 32 секунды.
Также обратите внимание, что это предполагает, что ваш индекс не является отрицательным.