我注意到,在许多情况下,从嵌套字典中检索数据比使用元组键的字典更快。这似乎与此处所说的相矛盾。(来源)能否有人解释一下导致这种情况的原因?我的问题是,更快的方法似乎不太符合“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
在我看来,这是一个非常重要的区别。