我正在尝试通过从文本文件中配对两行和两行来将键值对添加到字典中。为什么这不起作用?
newdata = {}
os.chdir("//GOLLUM//tbg2//tbg2//forritGB")
f = open(filename)
for line1, line2 in f.readlines():
newdata[line1] = line2
编辑:我得到的错误是
ValueError: too many values to unpack
答案 0 :(得分:0)
您正在读取所有行,并将第一行(序列)分配给两个变量。仅当第一行包含2个字符时才有效。请将该文件用作迭代器:
newdata = {}
os.chdir("//GOLLUM//tbg2//tbg2//forritGB")
with open(filename) as f:
for line1 in f:
newdata[line1.strip()] = next(f, '').strip()
此处next()
从文件中读取下一行。
替代方案是使用成对配方:
from itertools import izip_longest
def pairwise(iterable):
return izip_longest(*([iter(iterable)] * 2), '')
newdata = {}
os.chdir("//GOLLUM//tbg2//tbg2//forritGB")
with open(filename) as f:
for line1, line2 in pairwise(f):
newdata[line1.strip()] = line2.strip()
注意str.strip()
次调用,删除任何额外的空格(包括每行末尾的换行符)。
答案 1 :(得分:0)
newdata = {}
os.chdir("//GOLLUM//tbg2//tbg2//forritGB")
with open(filename) as f:
for line1, line2 in zip(*[iter(f)]*2):
newdata[line1] = line2
或
os.chdir("//GOLLUM//tbg2//tbg2//forritGB")
with open(filename) as f:
newdata = dict(zip(*[iter(f)]*2))