Доступ к элементу ключей dict по индексу в Python3
Я пытаюсь получить доступ к элементу dict_key по его индексу:
test = {'foo': 'bar', 'hello': 'world'}
keys = test.keys() # dict_keys object
keys.index(0)
AttributeError: 'dict_keys' object has no attribute 'index'
Я хочу сделать foo
.
то же самое с:
keys[0]
TypeError: 'dict_keys' object does not support indexing
как я могу это сделать?
3 ответа:
вызов
list()
в словаре вместо этого:keys = list(test)
в Python 3,
dict.keys()
метод возвращает a посмотреть в словарь объекта, который действует как установить. Итерация по словарю напрямую также дает ключи, поэтому превращение словаря в список приводит к списку всех ключей:>>> test = {'foo': 'bar', 'hello': 'world'} >>> list(test) ['foo', 'hello'] >>> list(test)[0] 'foo'
не полный ответ, но, возможно, полезный совет. Если это действительно первый пункт, который вы хотите*, то
next(iter(q))
гораздо быстрее, чем
list(q)[0]
для больших диктов, так как все это не должно храниться в памяти.
для 10.000.000 элементов я обнаружил, что это почти в 40.000 раз быстрее.
*первый элемент в случае диктатора является просто псевдослучайным элементом перед Python 3.6 (после этого он заказывается в стандарте реализация, хотя и не советую на нее полагаться).