ソートされたリストの辞書を作成するために、このように読み込む大きなファイル (約 1GB) があります。後で検索できるように、リストを並べ替える必要があります。これらは先行クエリ (x より小さい最大値を持つインデックス) になるため、セットは使用できません。
A = defaultdict(list)
B = defaultdict(list)
filename = sys.argv[1]
with open(filename) as fin:
lines = list(fin)
for line in lines:
vals=line.split()
vals[2] = int(vals[2])
bisect.insort_left(A[vals[1]],vals[2]]
bisect.insort_left(B[vals[0]],vals[2]]
残念ながら、遅すぎます。
プロファイリング ほぼすべての時間がbisect.insort_left
通話に費やされていることがわかります。
これをスピードアップする方法はありますか?
ソートされていない要素を追加して、後でソートする価値はありますか? もしそうなら、リストの辞書にあるすべてのリストをどのようにソートできますか?