テキストファイルを1行ずつ読み込み、奇数行を辞書のキーに割り当て、偶数行を辞書の値に割り当てるにはどうすればよいですか? テキストファイルを辞書に読み込む
A
B
C
D
E
F
G
H
は次のように辞書に入る::
dict{"A":"B","C":"D","E":"F","G":"H"}
テキストファイルを1行ずつ読み込み、奇数行を辞書のキーに割り当て、偶数行を辞書の値に割り当てるにはどうすればよいですか? テキストファイルを辞書に読み込む
A
B
C
D
E
F
G
H
は次のように辞書に入る::
dict{"A":"B","C":"D","E":"F","G":"H"}
with open(filename, 'r') as f:
d = {}
for line in f:
d[line.strip()] = next(f, '').strip()
注:たとえば、どのように私は新しい行の下に区切りのリストを作ることができ、あなたのファイルは、行の奇数を持っている場合は、あなたの最後のキーは空白の値になります。例外がスローされることを希望する場合はnext(f, '')
からnext(f)
に変更してください。異なるデフォルトの変更を希望する場合next(f, '')
〜next(f, 'default')
。
別の方法:テキストファイルは、行の奇数を持っている場合、それは最後のキーをドロップすることを
with open(filename, 'r') as f:
d = {k.strip():v.strip() for k, v in zip(f, f)}
注意。ラインの奇数がある最後のキーを維持するために
は行います
from itertools import izip_longest, imap
with open(filename, 'r') as f:
f = imap(str.strip, f)
d = dict(izip_longest(f, f, fillvalue='default'))
ニース。私はちょうど "iterablesの左から右への評価順序が保証されている"ことを知ったので、 '' zip() ''のディクテーションの理解は同じiterableをうまく通しています。 [zip()docsを参照](https://docs.python.org/3/library/functions.html#zip) –
は実際に、あなたはそれを通じてファイルやループを読み込む必要があります。行が奇数の場合は、その行をキーとして辞書に追加する場合でも値として覚えておいてください。
import sys
import numpy as np
fn=sys.argv[1]
d={}
with open(fn,'rb') as f:
for i,line in enumerate(f):
if np.mod(i+1,2)==0:
d[lastVal]=line.replace('\n','')
else:
lastVal=line.replace('\n','')
print d
これまでのコードはありますか? – dhke