Во многих случаях это может быть проблема XY . Почему вы индексируете ключи словаря по позициям? Вам действительно нужно? До недавнего времени словари в Python даже не упорядочивались, поэтому доступ к первому элементу был произвольным.
Я только что перевел код Python 2 на Python 3:
keys = d.keys()
for (i, res) in enumerate(some_list):
k = keys[i]
# ...
что не очень красиво, но и не очень плохо. Сначала я собирался заменить его чудовищным
k = next(itertools.islice(iter(keys), i, None))
прежде чем я понял, что все это намного лучше написано как
for (k, res) in zip(d.keys(), some_list):
который отлично работает.
Я считаю, что во многих других случаях индексации ключей словаря по позиции можно избежать. Хотя словари упорядочены в Python 3.7, полагаться на это не очень приятно. Приведенный выше код работает только потому, что содержимое some_list
было недавно создано из содержимого d
.
Внимательно посмотрите на свой код, если вам действительно нужен доступ к disk_keys
элементу по индексу. Возможно, вам и не нужно.
dict.keys()
возвращает набор, подобный объекту представления, а не списку (поэтому индексация невозможна). Использованиеkeys = list(test)