Çoğu durumda, bu bir XY Sorunu olabilir . Neden sözlük anahtarlarınızı konuma göre indeksliyorsunuz? Gerçekten ihtiyacın var mı? Yakın zamana kadar, sözlükler Python'da bile sipariş edilmiyordu, bu nedenle ilk öğeye erişmek keyfi bir şeydi.
Az önce bazı Python 2 kodunu Python 3'e çevirdim:
keys = d.keys()
for (i, res) in enumerate(some_list):
k = keys[i]
# ...
bu hoş değil ama çok da kötü değil. İlk başta onu canavarla değiştirmek üzereydim
k = next(itertools.islice(iter(keys), i, None))
farkına varmadan önce, bunların çok daha iyi yazıldığını
for (k, res) in zip(d.keys(), some_list):
hangi gayet iyi çalışıyor.
Diğer birçok durumda, sözlük anahtarlarının konuma göre endekslenmesinin önlenebileceğine inanıyorum. Sözlükler Python 3.7'de sıralanmasına rağmen, buna güvenmek hoş değil. Yukarıdaki kod yalnızca, öğesinin içeriği some_list
yakın zamanda öğesinin içeriğinden üretildiği için çalışır d
.
Dizine göre bir disk_keys
öğeye gerçekten erişmeniz gerekiyorsa kodunuza iyice bakın. Belki gerek yok.
dict.keys()
, liste değil, görünüm nesnesi gibi bir küme döndürür (bu nedenle, indeksleme mümkün değildir). Kullanımkeys = list(test)