Skip to main content
 首页 » 编程设计

python之从文本文件中的行中剥离字符串并将列读入以列表为值的字典中

2025年05月04日25lidabo

我一直在努力将我的输入文件转换为适用于我的算法的正确格式。

我想阅读这个文本文件:

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]}