python – 在带有列表和迭代的文件中压缩行
我想创建一个字典,其中的键是从列表键中获取的,值是从多个文本文件中获取的行列表.我们假设列表键和要读取的所有文件具有相同的行数.
如何同时迭代列表键和每个文件的行?我的想法是使用zip(),但这对我没用. 我知道我可以使用以下方法迭代文件中的行: currFile = open('myfile.txt','r') for line in currFile: # Do something 而且我知道我可以同时迭代两个列表: for foo,bar in zip(foos,bars): # Do something 但这不起作用: myDict = {} keys = [17,21,8,2,...,91] currFile = open('myfile.txt','r') for key,line in zip(keys,currFile): myDict[key] = line 我可以将文件中的所有行拉出到列表中,压缩它,然后运行循环,但这不会非常有效. 如何同时迭代文件中的列表键和行,以便动态调用zip()? 解决方法
这个解决方案适用于任意数量的文件,这个演示只有两个.演示文件file1的内容: line0 line1 line2 line3 演示文件file2的内容: line5 line6 line7 line8 现在列出你的文件对象文件(例如[open(‘file1′,’r’),open(‘file2′,’r’)]). from collections import defaultdict as ddict d = ddict(list) for number,lines in enumerate(zip(*files)): for line in lines: d[number].append(line) 我使用Python3,如果你使用Python2.x使用izip.关闭文件: for file in files: file.close() d的内容: defaultdict(<type 'list'>,{0: ['line0n','line5n'],1: ['line1n','line6n'],2: ['line2n','line7n'],3: ['line3n','line8n']}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |