У багатьох випадках це може бути проблема 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)