Python 将单列文件存储到字典中
我有一个如下所示的文件:Python 将单列文件存储到字典中,python,file,dictionary,key,Python,File,Dictionary,Key,我有一个如下所示的文件: >Organism1 ETTGDMND >Organism2 PDELMESPEER >Organism3 YERLLRRAQ >Organism1 EDLTEVSGIGC 我想创建一个字典,其中大写字母(=氨基酸序列)是键,生物体名称是值。 到目前为止,我已经: dict1 = {} for line in file.readlines(): li
>Organism1
ETTGDMND
>Organism2
PDELMESPEER
>Organism3
YERLLRRAQ
>Organism1
EDLTEVSGIGC
我想创建一个字典,其中大写字母(=氨基酸序列)是键,生物体名称是值。
到目前为止,我已经:
dict1 = {}
for line in file.readlines():
line = line.rstrip()
if ">" not in line: # '>' not in the line=amino acid seq
key = line #assign the line into a variable 'key'
dict1[key] = [] #make this variable the keys of dict1
else: #if '>'is in the line = organism
value = line
dict1[key] = value
print dict1
它会引发未定义“键”的错误消息。但我认为这是通过说key=line
使用同一输入文件的相关问题。如果我只想调用该文件中的氨基酸序列(出于其他目的),我会:
但它只打印了一个序列而不是所有序列。
有人能帮我吗?
谢谢 由于值总是在键之前,一种简单的方法是“记住”另一个变量中的值,在获取键时可以使用该变量。因此,以下措施应该有效:
dict1 = {}
file = open("somedata.dat")
for line in file: # note you can leave out readlines() here
line = line.rstrip()
if line[0] == ">": # safer to check just first char
value = line[1:] # use [1:] to drop the ">" from the value
else:
dict1[line] = value
print dict1
如果在一个值之后有多行氨基酸键,则所有键将使用相同的值
关于第二个问题,问题是这一行:
my_sequences = [line]
始终替换my_sequences
,而不考虑其先前的值,因此您将得到一个包含最后处理的序列的单项目列表。替换为:
my_sequences.append(line)
它会在列表的末尾添加一个项目,并且它会执行您想要的操作。键还是值哪个在前?您的第一行是>m1。这意味着代码将跟随
else
分支,其中未定义key
。啊,这很有意义!是的,很好,这给了我所需要的。谢谢另外一个问题是,除了创建字典,如果我只想调用该文件中的氨基酸序列(出于另一个目的),我还做了我的_序列=[]对于文件中的行:line=line.rstrip()如果“>”不在行中:my_sequences=[line]#将这些dna序列添加到列表中“my_sequences”打印my#sequences#但这只会给我一个序列
my_sequences.append(line)