3.7. ディクショナリ

3.7.1. ディクショナリの基本

keyとvalueのセットは他のプログラミング言語でもよくある機能です。リストと同様、使用頻度はかなりあると思います。

1
2
3
4
  test = {'YEAR':'2020', 'MONTH':'AUG', 'DAY':'20'}
  print (test)
  print ('---------------------------')
  print(test['MONTH'])

出力

{'YEAR':'2020', 'MONTH':'AUG', 'DAY':'20'}
---------------------------
AUG

タプルは「 () 」(カッコ)、リストは「 [] 」(ブラケット)を使いますが、ディクショナリは「 {} 」(ブレース)を使用します。一つの要素を「 key:value 」のようにし、次の要素との間に「 , 」(カンマ)で区切りを入れます。

ディクショナリに対して繰り返し処理を行うとkeyが取得できるので、次の例ではそれを利用してvalueを取り出しています。

1
2
3
4
5
6
7
8
 test = {'YEAR':'2010', 'MONTH':'1', 'DAY':'20'}
 print(test)
 for key in test:
 print('--------------------------------')
 print(key)
 print(test[key])

 print('--------------------------------')

出力

{'MONTH': '1', 'DAY': '20', 'YEAR': '2010'}
=================================
MONTH
1
--------------------------------
DAY
20
--------------------------------
YEAR
2010
--------------------------------

3.7.2. valueの取得

先程のサンプルコードでは「 dict_obj[key] 」というような形式で値を取得しましたが、「get」を利用する事もできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
test_dict_1 = {'YEAR':'2020', 'MONTH':'1', 'DAY':'20'}

print (test_dict_1)

print ('=================================')

print test_dict_1['YEAR'])
#print (test_dict_1['YEARS'])

print ('---------------------------------')

print (test_dict_1.get('YEAR')
print (test_dict_1.get('YEARS')

print ('---------------------------------')

print (test_dict_1.get('YEAR','NOT FOUND'))
print (test_dict_1.get('YEARS','NOT FOUND'))

出力

{'MONTH': '1', 'DAY': '20', 'YEAR': '2020'}
=================================
2020
---------------------------------
2020
None
---------------------------------
2020
NOT FOUND

「get」を使用する利点は、ディクショナリ内に対応するkeyが存在しなくてもエラーにはならないことです。「 dict_obj[key] 」というような形で取得した場合、keyが存在しないと「KeyError」となりエラー終了してしまいます。また「get」はkeyが存在しなかった場合のデフォルト値を設定することができ、例では'NOT FOUND'という文字列を返すようにしています。

3.7.3. 要素の追加

ディクショナリへkeyとvalueの要素を追加する場合は下記の通り記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  test_dict_1 = {}

  print (test_dict_1)

  print ('=================================')

  test_dict_1['YEAR']  = '2020'
  test_dict_1['MONTH'] = '1'
  test_dict_1['DAY']   = '20'

  print (test_dict_1)

出力

{}
=================================
{'MONTH': '1', 'DAY': '20', 'YEAR': '2020'}

3.7.4. 要素の削除

ディクショナリから要素を削除する場合は「del」を使用します。

1
2
3
4
5
6
7
8
9
test_dict_1 = {'YEAR':'2020', 'MONTH':'1', 'DAY':'20'}

print (test_dict_1)

print ('=================================')

del test_dict_1['DAY']

print (test_dict_1)

出力

{'MONTH': '1', 'DAY': '20', 'YEAR': '2020'}
=================================
{'MONTH': '1', 'YEAR': '2020'}

「del」の後に削除を行うkeyを指定します。

3.7.5. keyやvalueだけを取得する

「keys」を使用するとディクショナリからkeyのみを取得し、リスト化して返されます。また「values」はvalueのみを取得します。

1
2
3
4
5
6
7
8
test_dict_1 = {'YEAR':'2020', 'MONTH':'1', 'DAY':'20'}

print (test_dict_1)

print ('=================================')

print (test_dict_1.keys())
print (test_dict_1.values())

出力

{'MONTH': '1', 'DAY': '20', 'YEAR': '2020'}
=================================
['MONTH', 'DAY', 'YEAR']
['1', '20', '2020']

3.7.6. keyを保持しているか否かの確認

ディクショナリが指定のキーを含んでいるかを確認するには「in」を利用します。

1
2
3
4
5
6
7
test_dict_1 = {'YEAR':'2020', 'MONTH':'1', 'DAY':'20'}

print (test_dict_1)

print ('=================================')
print ('YEAR' in test_dict_1)
print ('YEARS' in test_dict_1)

出力

{'MONTH': '1', 'DAY': '20', 'YEAR': '2020'}
=================================
True
False