「順序付けられた辞書を使用しない理由はありますか」に対するTim Peterの回答で、彼は言います
OrderedDict は dict のサブクラスです。
それほど遅くはありませんが、プレーンな dict を使用するよりもメモリが少なくとも 2 倍になります。
今、特定の質問をしている間、私はいくつかのサンプルチェックを試しipython
ましたが、どちらも以前の推論と矛盾しています:
dict
との両方OrderedDict
が同じサイズです- での操作は、での
OrderedDict
操作よりも約 7 ~ 8 倍の時間がかかりますdict
(したがって、はるかに遅くなります)。
誰かが私の推論のどこが間違っているのか説明できますか?
大きな Dict と OrderedDict を作成し、サイズを比較します。
import sys
import random
from collections import OrderedDict
test_dict = {}
test_ordered_dict = OrderedDict()
for key in range(10000):
test_dict[key] = random.random()
test_ordered_dict[key] = random.random()
sys.getsizeof(test_dict)
786712
sys.getsizeof(test_ordered_dict)
786712
を使用して挿入にかかった時間を確認し%timeit
ます。
import sys
import random
from collections import OrderedDict
def operate_on_dict(r):
test_dict = {}
for key in range(r):
test_dict[key] = random.random()
def operate_on_ordered_dict(r):
test_ordered_dict = OrderedDict()
for key in range(r):
test_ordered_dict[key] = random.random()
%timeit for x in range(100): operate_on_ordered_dict(100)
100 loops, best of 3: 9.24 ms per loop
%timeit for x in range(100): operate_on_dict(100)
1000 loops, best of 3: 1.23 ms per loop