加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在带有列表和迭代的文件中压缩行

发布时间:2020-12-20 13:43:29 所属栏目:Python 来源:网络整理
导读:我想创建一个字典,其中的键是从列表键中获取的,值是从多个文本文件中获取的行列表.我们假设列表键和要读取的所有文件具有相同的行数. 如何同时迭代列表键和每个文件的行?我的想法是使用zip(),但这对我没用. 我知道我可以使用以下方法迭代文件中的行: currF
我想创建一个字典,其中的键是从列表键中获取的,值是从多个文本文件中获取的行列表.我们假设列表键和要读取的所有文件具有相同的行数.

如何同时迭代列表键和每个文件的行?我的想法是使用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()?

解决方法

want to create a dictionary where the keys are line numbers and the values are lists of lines taken from multiple text files. Let’s assume all the files to be read have the same number of lines.

这个解决方案适用于任意数量的文件,这个演示只有两个.演示文件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']})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读