多くの場合、ネストされた辞書からのデータ取得は、タプル キーを持つ辞書からのデータ取得よりもはるかに高速であることに気付きました。これは、ここで述べたことと矛盾しているようです。誰でもこれの原因を説明できますか? 私の問題は、より速い方法は「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
これは私の意見では非常に大きな違いです。