Dav*_*K11 1 python file-io dictionary python-3.x
我一直在努力将输入文件转换为我的算法的正确格式.
我想阅读这个文本文件:
1 -> 7,8
11 -> 1,19
219 -> 1,9,8
Run Code Online (Sandbox Code Playgroud)
进入这本词典:
{ 1: [7, 8], 11: [1, 19], 219: [1, 9, 8]}
Run Code Online (Sandbox Code Playgroud)
我试过这段代码:
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
Run Code Online (Sandbox Code Playgroud)
但是使用这个代码,它会被第二列中有超过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(',')]
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用词典理解并使它成为一个单行:
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)
}
Run Code Online (Sandbox Code Playgroud)
这给出了:
>>> d
{1: [7, 8], 11: [1, 19], 219: [1, 9, 8]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |