2017-04-08 15 views
0

に一列にファイルを格納:私は、このようなファイル持っている辞書

>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 

それは「キー」が定義されていないことを示すエラーメッセージが発生します。しかし、私はそれがキー=ラインと言っていると思った..?

同じ入力ファイルを使用して関連する質問。私は(別の目的のために)、そのファイルからアミノ酸配列にのみ呼び出すしたい場合は、私がやった:

my_sequences = [] 
for line in file: 
    line = line.rstrip() 
    if ">" not in line: 
     my_sequences = [line] # add these dna sequences to the list "my_sequences" 
print my_sequences 

それだけですべてのシーケンスの代わりに一つのシーケンスを印刷します。 誰でも助けてくれますか? ありがとう!

+0

最初に来たのは、キーか値ですか? –

+0

あなたの最初の行は_> Organism1_です。つまり、コードは 'key'が定義されていない' else'ブランチに従います。 – CristiFati

+0

ああ、意味があります! – ccaarroo

答えて

0

あなたの値は常にあなたのキーの前に来るので、あなたがキーを取得したときに使うことができる別の変数の値を "記憶"するのが簡単な方法です。だから、以下が動作するはず:単一の値以下のアミノ酸キーの複数の行がある場合

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を置き換えるので、あなたが最後に処理シーケンスを含む1項目のリストを取得:あなたの2番目の質問については、問題は、この行があること

ですそれを次のように置き換えてください:

my_sequences.append(line) 

リストの末尾に項目を追加すると、それはあなたが望むことを行います。

+0

ええ、それは私に必要なものを与える。ありがとう! – ccaarroo

+0

辞書作成から離れて別の質問 - そのファイルからアミノ酸配列のみを呼び出す場合は、別の目的でmy_sequences = []をファイルに入れました: line = line.rstrip() if ">" not in line: my_sequences = [行]#これらのdna配列をリスト "my_sequences"に追加 print my_sequences#しかし、私にはただ一つの配列が与えられる – ccaarroo

+0

ああ、 – ccaarroo

関連する問題