[英]Read Text File into Dictionary
如何逐行读取文本文件,并将奇数行分配给字典的键,将偶数行分配给字典的值? 例如,如何使下面的新行分隔列表:
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'))
实际上,您只需要读入一个文件并循环浏览即可。 如果一行是奇数,请记住它作为值,如果一行是偶数,则以该行为键将其追加到字典中。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.