答案似乎取决于您使用的 Python 版本。
这些是我在 Python 2.7.3 上使用 IPython 0.13 的结果:
In [11]: mylist = ["item{}".format(i) for i in range(10**7)]
In [12]: %timeit d = dict(zip(mylist, range(len(mylist))))
1 loops, best of 3: 6.97 s per loop
In [13]: %timeit d = {item: i for i, item in enumerate(mylist)}
1 loops, best of 3: 3.68 s per loop
In [14]: # Edit: xrange is faster than range in Python 2
In [15]: %timeit d = dict(zip(mylist, xrange(len(mylist))))
1 loops, best of 3: 5.58 s per loop
这就是我在 Python 3.3.2 上使用 IPython 0.13 得到的:
In [5]: mylist = ["item{}".format(i) for i in range(10**7)]
In [6]: %timeit d = dict(zip(mylist, range(len(mylist))))
1 loops, best of 3: 2.62 s per loop
In [7]: %timeit d = {item: i for i, item in enumerate(mylist)}
1 loops, best of 3: 2.92 s per loop
这可能是因为zip
在 Python 3 中不返回列表,而只返回一个迭代器……</p>