0

ということで、以下のようなリストを作成しました。

list = [line.strip() for line in open('file.txt','r')]

これは私のリストの一部です。

[
 '1 2',
 '2 3',
 '2 3',
 '4 3 1',
 '3 4',
 '5 4 2 1',
 '4 4',
 '8 3 5 2',
 '5 7',
 '15 11 8 9 6 3 4',
]

最初の数字がキーで、その後の数字が値である辞書を作成したいのですが、int 形式にしたいです。

辞書に関連するクラスの使用方法がわかりません。

4

1 に答える 1

5

これでうまくいくはずです:

In [3]: arrs = [map(int, line.strip().split()) for line in open('file.txt')] 
In [4]: first2rest = dict( (arr[0], arr[1:]) for arr in arrs)

In [5]: first2rest
Out[5]: {1: [2], 2: [3], 3: [4], 4: [4], 5: [7], 8: [3, 5, 2], 15: [11, 8, 9, 6, 3, 4]}

分解してみましょう。この部分は、ファイル内の各行をスペースで分割し、int に変換します。

map(int, line.strip().split())

次に、この部分は、行の最初の項目から残りの項目までの辞書を作成します。

first2rest = dict( (arr[0], arr[1:]) for arr in arrs)

ただし、@SethMMorton が指摘したように、リストしたファイルには同じキーが複数回含まれているため、データが失われます。

于 2013-10-18T00:15:43.707 に答える