Whenever you construct a new container object in Python, using its comprehension notation will be slightly faster than any other means. In this case, if you want to construct reverse-lookup dictionary, you can use dictionary comprehension, like this
d = {i: i * 2 for i in range(10000)}
from timeit import timeit
print timeit("{d[k]: k for k in d}", "from __main__ import d", number = 10000)
# 7.22010397911
print timeit("dict((v, k) for k, v in d.iteritems())", "from __main__ import d", number = 10000)
# 10.6085851192
For value lookups, I would recommend using dict.viewvalues
like this
d = {i: i * 2 for i in range(10000)}
print 10 in d.viewvalues()
# True
But if the dictionary is not gonna change over time, then converting the values to a set would be a better option.
values_set = set(d.viewvalues())