And this is a list comprehension being passed to the dict constructor:

dict([(k, v) for k, v in zip(keys, values)])

In the first two cases, an extra layer of non-operative (thus unnecessary) computation is placed over the zip iterable, and in the case of the list comprehension, an extra list is unnecessarily created. I would expect all of them to be less performant, and certainly not more-so.

Performance review:

In 64 bit Python 3.4.3, on Ubuntu 14.04, ordered from fastest to slowest:

Hi xiyurui, The input(l1 and l2) should be a list. If you assign l1 and l2 as a set it may not preserve insertion order. for me i got the output as {1: 'a', 2: 'c', 3: 'd', 4: 'b', 5: 'e'}
– NursnaazJan 31 at 8:32