Похоже, что списки, возвращаемые keys()и values()методы словаря, всегда являются отображением 1: 1 (при условии, что словарь не изменяется между вызовами 2 методов).
Например:
>>> 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
Если вы не измените словарь между вызовом keys()и вызовом values(), неправильно ли считать, что приведенный выше цикл for всегда будет печатать True? Я не смог найти никаких документов, подтверждающих это.