バイオインフォ道場、くまぞうです。
Pythonで複数のデータをキー(単語やIDなど)で管理するには、辞書を使うと便利です。辞書を使うための簡単な操作を確認します。
スポンサーリンク
Python 辞書
Pythonの辞書は、キーとデータが対になった複数の箱のようなものです。キーを指定してデータを格納したり取り出したりします。辞書にはいろんな種類のオブジェクトを入れることができます(数値・文字列・リストなど)。辞書の大きさは自動で調整されます。他のプログラミング言語のハッシュのような構造です。
Python 辞書の使い方
基本的な操作
辞書の定義
Pythonの辞書は中カッコ({}
)で囲みます。辞書内のデータはキーとデータをコロン
(:)で1組とし、それぞれの組はカンマ
(,)で区切ります。1つ1つのデータは要素と呼ばれます。
>>> aaa = {"id1":"name1", "id2":"name2", "id3":"name3"}
キーを指定したデータへのアクセス
辞書の要素にアクセスするには、キーを指定します。
>>> aaa = {"id1":"name1", "id2":"name2", "id3":"name3"} >>> aaa["id1"] 'name1' >>> aaa["id3"] 'name3'
データの追加
新しいキーを指定して、データを追加します。
>>> aaa = {"id1":"name1", "id2":"name2", "id3":"name3"}
>>> aaa["id4"] = "name4"
>>> aaa
{'id4': 'name4', 'id2': 'name2', 'id3': 'name3', 'id1': 'name1'}
データの変更
新しいキーを指定してデータをセットすると、対応する要素が更新されます。
>>> aaa {'id4': 'name4', 'id2': 'name2', 'id3': 'name3', 'id1': 'name1'} >>> aaa["id4"] = "NAME4" >>> aaa {'id4': 'NAME4', 'id2': 'name2', 'id3': 'name3', 'id1': 'name1'}
データの削除
辞書のデータの削除は、del関数
でキーを指定します。
>>> aaa {'id4': 'NAME4', 'id2': 'name2', 'id3': 'name3', 'id1': 'name1'} >>> del aaa["id4"] >>> aaa {'id2': 'name2', 'id3': 'name3', 'id1': 'name1'}
便利な操作
key(キー)一覧の取得
辞書に登録されたキーの情報を得ることができます。keys関数
を使います。
>>> aaa.keys() ['id2', 'id3', 'id1']
要素ー情報の取得
辞書に登録された要素の情報を得ることができます。values関数
を使います。
>>> aaa.values() ['name2', 'name3', 'name1']
key(キー)登録の確認
辞書にキーが登録されているかを確認ことができます。has_key関数
を使います。
>>> aaa.keys() ['id2', 'id3', 'id1'] >>> aaa.has_key('id1') True >>> aaa.has_key('id4') False
サンプル
辞書を使った、Pythonのスクリプト例です。fastaファイルを読みこんでデータを辞書に格納します。最後にヘッダーをキーにしてデータを取り出します。
dic_test.py
#! /usr/local/bin/python # -*- coding: utf-8 -*- file_name = "my.fasta" d_fasta = {} p_key = "" p_val = "" f = open(file_name, "r") for line in f.readlines(): if line[0] == '>': if p_key != "": d_fasta[p_key] = p_val # 辞書にセット p_key = "" p_key = line[1:].strip() p_val = "" else: p_val += line.strip() f.close() d_fasta[p_key] = p_val print d_fasta.keys() # キー情報 print for x in d_fasta.keys(): print x print d_fasta[x]+"\n" # キーに対応した要素
my.fasta
>cds1 ATGGTGGGTGGCAAGAAGAAAACCAAGATATGTGACAAAGTGTCACATGA TTTGGCAATCGGTTCCTGGATTGGACTTAGACCCCTACGCATCCTCAAAT GAAATGTTGCCAACGCTTCTTGAGAGCTGCCCAAAACTTGAATCTCTCAT >cds2 ATGGTTCAATATAATTTCAAGAGGATCACAGTTGTTCCCAATGGGAAGGA GCACGTCGTGGTGAAGCTGACAGAGTTATACCAACGCTTAGACCGAAACA AACCGACAGGCGTTGA >cds3 ATGACTCGTTTGTTGCCTTACAAAGGTGGAGATTTTTTGGGACCGGATTT CCGAGGTATACCTCTACCTTATCTTTCTGAATTAACTGTGAGCTTCATAG GCAAAAATTAAGATTGGTGAATGCTCAAAACGTAAAAAGGATAAGCAAGT >cds4 ATGGATTCAGAGTCAGAGTCAAAGCTCATATCATTCATTTCTCAATTAGT ATCATGCATGATACAAACAATCTCTCTGGTCAGCTCAATGGATTTGAAGT ATCTATTTCGGTAACTTCTTCTCATGTATGCAATGTGATTATATTCTCCA >cds5 ATGTCGGTTCCTCCTAGATTCCGGTCCGTAAATTCCGATGAGCGAGAGTT GCTGCAGAGGAAACCACCGGGGATGAAACTGGAGAAGCCGATGATGGAGA GAGAGAGAGTGATAAATAA
実行と結果
$ ls my.fasta dic_test.py $ python dic_test.py ['cds1', 'cds2', 'cds3', 'cds4', 'cds5'] #キー一覧 cds1 #キー ATGGTGGGTGGCAAGAA... #要素 cds2 #キー ATGGTTCAATATAATTT... #要素 ...
スポンサーリンク