ディクショナリはキーと値がセットになって保存されるオブジェクト(変数)型である。例えば GUU を与えると V を出力したり、AUG を与えると M を出力したりするような辞書的な機能を持つ。この場合、GUU と AUG をキーといい、V と M を値という。他のプログラミング言語のハッシュやマップなどに似ている。
ディクショナリの作成
ディクショナリはキーと値が 1 セットとなるように作成する。
codon = {'UUU' : 'F', 'CUU' : 'L', 'AUU' : 'I'}
print(codon['CUU'])
## 'L'
ディクショナリ要素の取得
ディクショナリの要素の値を取得するとき、キーを指定して取得する。ディクショナリに指定したキーが存在していれば、そのキーに対応する値は返されるが、キーが存在しなければエラーが出る。
codon = {'UUU' : 'F', 'CUU' : 'L', 'AUU' : 'I'}
print(codon['CUU'])
## 'L'
print(codon['UGU'])
## Traceback (most recent call last):
## File "", line 1, in
## KeyError: 'UGU'
ディクショナリを利用する際に、与えたキーが存在しない時にエラーが起きるため、値を取得する前にキーの存在確認を行う必要がある。
codon = {'UUU' : 'F', 'CUU' : 'L', 'AUU' : 'I'}
print('UUU' in codon)
## True
print('UGU' in codon)
## False
k = 'CAC'
if k in codon:
print(codon[k])
else:
print('*')
## *
for
文を利用することで、ディクショナリ中のすべての要素を取り出すことができる。ただし、取り出される順番は、保存した順番とは限らない。
codon = {'UUU' : 'F', 'CUU' : 'L', 'AUU' : 'I'}
for k, v in codon.items():
print(k + ":" + v)
## CUU:L
## AUU:I
## UUU:F
for k in codon.keys():
print(k + ":" + codon[k])
## CUU:L
## AUU:I
## UUU:F
for v in codon.values():
print(v)
## L
## I
## F
ディクショナリ要素の更新
ディクショナリ要素の追加と変更
既存のディクショナリの要素を変更するには、ディクショナリに該当のキーを入れて、新しい値を代入すればよい。
dict = {'UUU': 'F', 'UAU': 'Y'}
print(['UUU'])
## F
dict['UUU'] = '*'
print(['UUU'])
## *
ディクショナリに新しいキーと要素を追加する場合は、要素の更新と同じ要領で行う。
dict = {'UUU': 'F', 'UAU': 'Y'}
k = 'AUU'
if k not in dict:
dict['AUU'] = 'I'
print(dict)
## {'UUU': 'F', 'UAU': 'Y', 'AUU': 'I'}
ディクショナリの update
メソッドを利用すると、複数のキーと値を一括に更新あるいは追加することができる。
dict = {'UUU': 'F', 'UAU': 'Y'}
dict_new = {'CUU': 'L', 'AUU': 'I'}
print(dict)
## {'UAU': 'Y', 'UUU': 'F'}
dict.update(dict_new)
print(dic_1)
## {'UAU': 'Y', 'AUU': 'I', 'CUU': 'L', 'UUU': 'F'}
ディクショナリ要素の削除
キーの削除は del
または pop
を利用する。del
はキーと値を削除するだけであるのに対して、pop
はキーと値を削除してから、その値を返す。
codon = {'UUU' : 'F', 'CUU' : 'L', 'AUU' : 'I'}
del codon['UUU']
print(codon)
## {'CUU': 'L', 'AUU': 'I'}
c = codon.pop('CUU')
print(c)
## 'L'
print(codon)
## {'AUU': 'I'}
2 次元ディクショナリ
Python では多次元のディクショナリを簡単に作成できる。具体的に 1 層目ディクショナリの値に、もう 1 つのディクショナリを代入すればよい。
gene = {'ers1': {}, 'etr1': {}, 'ein3': {}}
gene['ers1'] = {'TAIR': 'AT2G40940', 'desc' : 'ethylene response sensor 1', 'loci': 'Chr2:17084321-17087326'}
gene['etr1'] = {'TAIR': 'AT1G66340', 'desc' : 'ethylene sensor', 'loci': 'Chr1:24734162-24737756'}
gene['ein3'] = {'TAIR': 'AT3G20770', 'desc' : 'ethylene insensitive 3', 'loci': 'Chr3:7260429-7263384'}
print(gene['ein3']['loci'])
## Chr3:7260429-7263384