繁体   English   中英

将文本文件读入字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM