Wygląda na to, że listy zwracane przez keys()i values()metody słownika są zawsze mapowaniem 1 na 1 (zakładając, że słownik nie jest zmieniany między wywołaniem 2 metod).
Na przykład:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
Jeśli nie zmienisz słownika między dzwonieniem keys()a dzwonieniem values(), czy błędem jest założenie, że powyższa pętla for zawsze będzie wyświetlać True? Nie mogłem znaleźć żadnej dokumentacji potwierdzającej to.