3

ファイルの内容を取得して辞書に変更するにはどうすればよいですか? コンテンツには、次の形式のメニュー項目が含まれます。

1 Chocolate ice cream
2 Green tea
 8 Shrimp roll

そして、キーを数値に、値を食品にします。

これまでのところ、私は得ました:

d = {}
for line in menu.read().strip().split():
      d[line[0]] = d[line[1:]]
return d

しかし、これは歪んで出てきます...

4

4 に答える 4

5

ファイル オブジェクトを 1 行ずつループしてから、行を分割します。

with open('inputfilename.txt') as menu:
    d = {}
    for line in menu:
        key, value = line.split(None, 1)
        d[key] = value.strip()
    return d

この.split(None, 1)呼び出しは、デフォルトの分割アルゴリズム (任意の幅の空白で分割) を適用しますが、1 つの分割に制限して、2 つのアイテムのみを返します。利点は、先頭の空白が分割前に削除されるため、空白で始まる行(投稿の行など' 8 Shrimp roll') も正しく処理されることです。

これにより、次が生成されます。

{'2': 'Green tea', '1': 'Chocolate ice cream', '8': 'Shrimp roll'}
于 2013-07-23T15:04:40.040 に答える
2

辞書の理解はどうですか?

{ k:v.strip() for k, v in (line.split(None, 1) for line in menu) }
于 2013-07-23T15:08:08.240 に答える
2

これを試すことができます:

d = {}
for line in menu.read().strip().split():
      d[line[0]] = line[1:] # you want to use just line[1:], than d[line[1:]]
return d

ここでの問題はd[line[1:]]、 key によってマップされた値が得られることですline[1:]

于 2013-07-23T15:04:54.137 に答える
2
>>> finalDict = {}
>>> with open('fileName.txt', 'r') as f:
        for line in f:
            key, elem = line.strip().split(" ", 1)
            finalDict[int(key)] = elem


>>> finalDict
{8: 'Shrimp roll', 1: 'Chocolate ice cream', 2: 'Green tea'}

ファイルの各行を繰り返し処理し、それを取り除き、最初のスペースで分割します。

于 2013-07-23T15:05:47.340 に答える