压缩两个字符串列表以用作字典中的键



我有一个文本文件,大约有三十行:

F2(g)+2e–|2F–(aq)|+2.87
Co3+(aq)+e–|Co2+(aq)|+1.82

我已经拆分了"|"处的行以创建三个单独的列表,但我想合并列表leftright,并使用压缩列表作为字典中的键,第三个列表作为值。这是我当前的代码:

infile = open('myfile.txt', 'r')
lines = infile.readlines()
infile.close()
data = {}
for line in lines[1:]:
left, right, value = line.rstrip('n').split('|')
z = [str(x[0]) + x[1] for x in zip(left, right)] 
data[z]=value

这行不通。当我尝试压缩leftrightz时,我得到这样的结果:

['F2', '2F', '(–', 'g(', ')a', '+q', '2)']
['CC', 'oo', '32', '++', '((', 'aa', 'qq', '))']

我试图完成的是这个输出:

{
'F2(g)+2e– 2F–(aq)': '+2.87',
'Co3+(aq)+e– Co2+(aq)': '+1.82'
}

您没有列表,您有字符串,因为您一次处理输入文件中的一行。那么你的错误是在leftright字符串上使用zip()。您不想将两个字符串的字符配对,您只想连接字符串,中间有一个空格。

您可以使用+' '.join(),或者仅使用两个值,使用字符串格式:

for line in lines[1:]:
left, right, value = line.rstrip('n').split('|')
z = f'{left} {right}'
data[z] = value

最新更新