我注意到,在许多情况下,从嵌套字典中检索数据比从带有元组键的字典中检索数据要快得多。这似乎与这里所说的相矛盾。谁能解释一下是什么原因造成的?我的问题是,更快的方法似乎不那么“pythonic”,并且可能导致巨大的丑陋嵌套字典(例如 a_dict[a][b][c][d] 而不是 a_dict[a,b,c,d])。
以下是使用整数作为键时发生这种情况的示例:
使用元组:
print timeit.timeit('''
for (int1, int2) in indexes:
x[ int1, int2 ]
''', setup='''
x={}
indexes = []
for int1 in xrange(1000):
for int2 in xrange(1000):
x[ int1, int2 ] = 'asd'
indexes.append((int1, int2))
''', number = 100)
使用嵌套字典:
print timeit.timeit('''
for (int1, int2) in indexes:
x[int1][ int2 ]
''', setup='''
x={}
indexes = []
for int1 in xrange(1000):
x[int1] = {}
for int2 in xrange(1000):
x[ int1 ][int2] = 'asd'
indexes.append((int1, int2))
''', number = 100)
结果:
36.8627537348
12.2223380257
在我看来,这是一个非常重要的差异。