文件中的字典只显示最后一个lin

2024-04-28 05:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个994行7列的.txt文件。第二列得到了与第三列上的残基相互作用的蛋白质残基的名称。右边剩下的是分数(前两个不重要)。你知道吗

我试图把它变成一个字典,第二列的元素作为键,其余的元素作为键值。问题是它似乎只放在最后一行。你知道吗

这是我的密码:

>>> f=open('C:/Users/Alex/Documents/1TRKGremlin.txt')
>>> dict={}
>>> for line in f:
...    lsplit=line.split()

>>> try:dict[lsplit[2]].appendl(lsplit[3:])
... except KeyError: dict[lsplit[2]]=[lsplit[3:]]

>>>print dict[]#here I only get the last line of the file

文件如下所示:

i   j   i_id    j_id    r_sco   s_sco   prob
205 208 205_K   208_E   0.5625  3.889   1.000
557 660 557_I   660_A   0.5471  3.783   1.000
425 439 425_M   439_G   0.5462  3.776   1.000
19  76  19_A    76_S    0.4867  3.365   1.000
436 462 436_K   462_P   0.4770  3.298   1.000
579 661 579_K   661_Q   0.4446  3.074   1.000

谢谢你!你知道吗


Tags: 文件thetxt名称id元素字典line
1条回答
网友
1楼 · 发布于 2024-04-28 05:09:08

在设置dict中的任何内容之前,for循环正在运行到完成。必须在循环中初始化dict项,因为一旦循环完成,最后一行的值只有lsplit

>>> f = open('C:/Users/Alex/Documents/1TRKGremlin.txt')
>>> mydict = {}
>>> for line in f:
...    lsplit = line.split()
...    try:
...        mydict[lsplit[2]].append(lsplit[3:])
...    except KeyError:
...        mydict[lsplit[2]] = [lsplit[3:]]
...
>>> print mydict

旁注:我把你的字典改名为mydict。不要将变量命名为与Python内置函数相同的名称,否则会对内置函数进行阴影处理,使其在变量的作用域中不可用,并导致混乱的错误。我还修复了一些拼写错误,并在每个PEP8的赋值运算符周围添加了空格。你知道吗

相关问题 更多 >