说我有一个文件" stuff.txt"在单独的行中包含以下内容: 问:5 R:2 s:7
我想从文件中读取每一行,并将它们转换为字典元素,字母是键,数字是值。 所以我想得到 y = {" q":5," r":2," s":7}
我已尝试过以下内容,但它只打印一个空字典" {}"
y = {}
infile = open("stuff.txt", "r")
z = infile.read()
for line in z:
key, value = line.strip().split(':')
y[key].append(value)
print(y)
infile.close()
答案 0 :(得分:6)
试试这个:
d = {}
with open('text.txt') as f:
for line in f:
key, value = line.strip().split(':')
d[key] = int(value)
您要附加d[key]
,就好像它是一个列表一样。你想要的只是像上面一样直接分配它。
另外,使用with
打开文件是很好的做法,因为它会在执行'with block'中的代码后自动关闭文件。
答案 1 :(得分:0)
有一些可能的改进。第一种是使用上下文管理器进行文件处理 - 即with open(...)
- 如果发生异常,这将为您处理所有需要的任务。
其次,你在字典赋值中有一个小错误:使用=运算符赋值,例如dict [key] = value。
y = {}
with open("stuff.txt", "r") as infile:
for line in infile:
key, value = line.strip().split(':')
y[key] = (value)
print(y)