I'm not sure I believe this:

```
In [5]: import random

In [9]: v_dict = {0: 1, 1: 2, 2:1}

In [4]: v_list = [1, 2, 1]

In [10]: %timeit v_dict[random.randint(0, 2)]
100000 loops, best of 3: 2.4 us per loop

In [11]: %timeit v_list[random.randint(0, 2)]
100000 loops, best of 3: 2.39 us per loop

In [12]: %timeit v_list[random.randint(0, 2)]
100000 loops, best of 3: 2.34 us per loop

In [13]: %timeit v_list[random.randint(0, 2)]
100000 loops, best of 3: 2.34 us per loop

In [14]: %timeit v_dict[random.randint(0, 2)]
100000 loops, best of 3: 2.39 us per loop

In [15]: %timeit v_dict[random.randint(0, 2)]
100000 loops, best of 3: 2.38 us per loop

In [16]: %timeit v_dict[random.randint(0, 2)]
100000 loops, best of 3: 2.39 us per loop
```

Both lookups are O(1) (according to http://wiki.python.org/moin/TimeComplexity). I'm happy enough to revert, but in terms of optimisation I'm really surprised this is noticeable...