初期識別子列、開始値、および終了値を持つ 2 つのファイルを比較しています。2 番目のファイルには、対応する識別子と別の値の列が含まれています。
元。
ファイル 1:
A 200 900
A 1000 1200
B 100 700
B 900 1000
ファイル 2:
A 103
A 200
A 250
B 50
B 100
B 150
出力が次のようになるように、最初のファイルで見つかった範囲内に含まれる 2 番目のファイルからすべての値を検索したいと思います。
A 200
A 250
B 100
B 150
今のところ、範囲のリストを含む最初のファイルから辞書を作成しました。
if Identifier in Dictionary:
Dictionary[Identifier].extend(range(Start, (End+1)))
else:
Dictionary[Identifier] = range(Start, (End+1))
次に、2 番目のファイルを調べて、範囲の辞書内で値を検索します。
if Identifier in Dictionary:
if Value in Dictionary[Identifier]:
OutFile.write(Line + "\n")
最適ではありませんが、これは比較的小さなファイルでは機能しますが、いくつかの大きなファイルがあり、このプログラムは非常に非効率的であることが証明されています. プログラムがより高速に実行されるように、プログラムを最適化する必要があります。