It looks like the lists returned by keys() and values() methods of a dictionary are always a 1-to-1 mapping (assuming the dictionary is not altered
keys()
values()
Good references to the docs. Here's how you can guarantee the order regardless of the documentation / implementation:
k, v = zip(*d.iteritems())