W wielu przypadkach może to być problem XY . Dlaczego indeksujesz klucze słownika według pozycji? Czy naprawdę potrzebujesz? Do niedawna słowniki nie były nawet porządkowane w Pythonie, więc dostęp do pierwszego elementu był dowolny.
Właśnie przetłumaczyłem kod Pythona 2 na Python 3:
keys = d.keys()
for (i, res) in enumerate(some_list):
k = keys[i]
# ...
co nie jest ładne, ale też niezbyt złe. Na początku miałem zamiar go zastąpić potwornym
k = next(itertools.islice(iter(keys), i, None))
zanim zdałem sobie sprawę, że to wszystko jest znacznie lepiej napisane jako
for (k, res) in zip(d.keys(), some_list):
który działa dobrze.
Uważam, że w wielu innych przypadkach można uniknąć indeksowania kluczy słownika według pozycji. Chociaż słowniki są uporządkowane w Pythonie 3.7, poleganie na tym nie jest ładne. Powyższy kod działa tylko dlatego, że zawartość some_list
została niedawno utworzona na podstawie zawartości d
.
Przyjrzyj się dokładnie swojemu kodowi, jeśli naprawdę potrzebujesz dostępu do disk_keys
elementu według indeksu. Być może nie musisz.
dict.keys()
zwraca zestaw, taki jak obiekt widoku, a nie lista (więc indeksowanie nie jest możliwe). Użyjkeys = list(test)