如何以下列格式从文本文件中获取数据:
abc 5
defg 8
ghi 58
jklmn 450
opqrstuv 8456
并将其添加到字典中。例如:第一个是字典['abc'] = 5,最后一个是字典['opqrstuv'] = 8456,依此类推。我需要添加所有数据(文本文件中的每一行)
答案 0 :(得分:5)
dictionary = {}
with open('path/to/file') as infile:
for line in infile:
key,value = line.split(" ")
dictionary[key] = int(value)
换句话说,逐行读取文件,并设置dict,使每个键都是单个空格之前的区域,每个值是单个空格强制转换为int之后的区域。
如果您总是拥有LETTERS NUMBERS
,那么您可以使用正则表达式执行此操作,但这似乎不必要的困难。
与字典映射一样,如果密钥冲突,请尝试考虑您想要的标准行为,例如:如果我在文件中看过"abc 5"
但之前已经"abc 10"
,那么dictionary["abc"]
就存在了。
(如果你愿意,这里是丑陋的地狱正则表达式解决方案:
import re
from operator import itemgetter as iget
with open('path/to/file') as infile:
data = infile.read() # UGH
re_data = re.findall(r"([^\d\s]+)|([\d]+)", data)
dictionary = dict(zip( map(iget(0),re_data[0::2]),map(int,map(iget(1),re_data[1::2])) ))
# DOUBLE UGH. As a rule of thumb, if you're using three map
# functions in one line, REFACTOR.
答案 1 :(得分:0)
dictionary={}
with open('file.txt','r') as f:
for line in f.readlines():
a,b = line.split()
dictionary[a] = int(b)