Parece que las listas devueltas keys()y los values()métodos de un diccionario son siempre un mapeo 1 a 1 (suponiendo que el diccionario no se altere entre llamar a los 2 métodos).
Por ejemplo:
>>> 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
Si no altera el diccionario entre llamadas keys()y llamadas values(), ¿está mal suponer que el bucle anterior siempre se imprimirá Verdadero? No pude encontrar ninguna documentación que confirme esto.