我一直在努力将我的输入文件转换为适用于我的算法的正确格式。
我想阅读这个文本文件:
1 -> 7,8
11 -> 1,19
219 -> 1,9,8
进入这本词典:
{ 1: [7, 8], 11: [1, 19], 219: [1, 9, 8]}
我试过这段代码:
with open("file.txt", "r+") as f:
f.write(f.read().replace("->", " "))
f.close()
d = {}
with open("file.txt") as file:
for line in file:
(key, val) = line.split()
d[key] = val
但是对于这段代码,它卡在了第二列中有超过 2 个参数的事实。如何根据第二列中的元素创建一个列表并将该列表用作每个键的值?
请您参考如下方法:
不需要执行预处理步骤来删除 '->'。只需使用:
d = {}
with open("file.txt") as file:
for line in file:
left,right = line.split('->')
d[int(left)] = [int(v) for v in right.split(',')]
您甚至可以使用词典理解 并使其成为一行:
with open("file.txt") as file:
d = {int(left) : [int(v) for v in right.split(',')]
for left,right in (line.split('->') for line in file)
}
这给出:
>>> d
{1: [7, 8], 11: [1, 19], 219: [1, 9, 8]}
