最も簡単な方法は、最初に でファイル全体をロードすることだと思います。これによりfile.readlines()
、ファイル全体がロードされ、行のリストが返されます。次に、内包表記を使用して辞書を作成できます。
lines = my_file.readlines()
my_dict = dict(lines[i:i+2] for i in range(0, len(lines), 2))
サンプルファイルの場合、これmy_dict
によりコンテンツが得られます。
{"Ben\n": "0 1 5 2 0 1 0 1\n", "Tim\n": "3 2 1 5 4 0 0 1\n"}
別のアプローチはwhile
、一度に 2 行を読み取るループを使用することです。
my_dict = {}
while True:
name = file.readline().strip()
if not name: # detect the end of the file, where readline returns ""
break
numbers = [int(n) for n in file.readline().split()]
my_dict[name] = numbers
このアプローチにより、以前のバージョンの理解よりも簡単に行の処理を行うことができます。たとえば、改行を削除したり、数字の行を実際のint
オブジェクトのリストに分割したりできます。
サンプル ファイルの結果は次のようになります。
{"Ben": [0, 1, 5, 2, 0, 1, 0, 1], "Tim": [3, 2, 1, 5, 4, 0, 0, 1]}