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

时间:2018-10-13 12:26:10

标签: python string python-3.x dictionary zip

我有一个文本文件,其中包含大约三十行:

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

这不起作用。当我尝试将leftright压缩到z时,会得到如下结果:

['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'
}

1 个答案:

答案 0 :(得分:0)

您没有列表,有字符串,因为您一次要处理输入文件中的一行。然后,您的错误是在zip()left字符串上使用right。您不想配对两个字符串的字符,只想连接字符串,并在它们之间留一个空格。

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

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