辞書内包表記

zip()関数に2つのシーケンスまたはイテレート可能オブジェクトを与えることで、同一箇所の要素の組み合わせからなるタプルのリストを生成することができる(i番目のタプルは各引数オブジェクトのi番目の要素を含む)。さらに、このタプルのリストをdict()関数に引数として与えることで、辞書オブジェクトに変換することができる。この方法を利用することで、KeyリストとValueリストから辞書オブジェクトを簡便に作ることが可能となる。

k = ['A', 'B', 'C', 'D', 'E']
v = [1, 5, -3, 9, 0]
zipped = zip(k, v)
d = dict(zipped)
print 'd :', d
d : {'A': 1, 'C': -3, 'B': 5, 'E': 0, 'D': 9}

この方法を使って、コドン-アミノ酸変換用辞書などを簡単に作製できる。

bases = ['T', 'C', 'A', 'G']
codons = [b1+b2+b3 for b1 in bases for b2 in bases for b3 in bases]
aminoacids = 'FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG'
codon_dict = dict(zip(codons, aminoacids))
for k, v in sorted(codon_dict.items()):
    print k, '>>>', v
AAA >>> K
AAC >>> N
AAG >>> K
AAT >>> N
ACA >>> T
ACC >>> T
ACG >>> T
ACT >>> T
AGA >>> R
AGC >>> S
AGG >>> R
AGT >>> S
ATA >>> I
ATC >>> I
ATG >>> M
ATT >>> I
CAA >>> Q
CAC >>> H
CAG >>> Q
CAT >>> H
CCA >>> P
CCC >>> P
CCG >>> P
CCT >>> P
CGA >>> R
CGC >>> R
CGG >>> R
CGT >>> R
CTA >>> L
CTC >>> L
CTG >>> L
CTT >>> L
GAA >>> E
GAC >>> D
GAG >>> E
GAT >>> D
GCA >>> A
GCC >>> A
GCG >>> A
GCT >>> A
GGA >>> G
GGC >>> G
GGG >>> G
GGT >>> G
GTA >>> V
GTC >>> V
GTG >>> V
GTT >>> V
TAA >>> *
TAC >>> Y
TAG >>> *
TAT >>> Y
TCA >>> S
TCC >>> S
TCG >>> S
TCT >>> S
TGA >>> *
TGC >>> C
TGG >>> W
TGT >>> C
TTA >>> L
TTC >>> F
TTG >>> L
TTT >>> F

参考情報