リストの次はディクショナリです(辞書とも呼ばれます)。基本的にはリストと同じような構造ではありますが、キーとなる値(key)とバリューとなる値(value)をセットで1つの要素として持つことができるのが特徴です。
ディクショナリの基本
keyとvalueのセットは他のプログラミング言語でもよくある機能です。リストと同様、使用頻度はかなりあると思います。
test_dict_1 = {'YEAR':'2010', 'MONTH':'1', 'DAY':'20'} print(test_dict_1) print('=================================') for i in test_dict_1: print(i) print(test_dict_1[i]) print('--------------------------------')
{'MONTH': '1', 'DAY': '20', 'YEAR': '2010'} ================================= MONTH 1 -------------------------------- DAY 20 -------------------------------- YEAR 2010 --------------------------------
タプルは「 () 」(カッコ)、リストは「 [] 」(大カッコ)で作成しますが、ディクショナリは「 {} 」(中カッコ)を使用します。一つの要素をkey:valueのようにし、次の要素との間に「 , 」(カンマ)で区切りを入れます。ディクショナリに対して繰り返し処理を行うとkeyが取得できるので、それを利用してvalueを取り出しています。
valueの取得
先程のサンプルコードではdict_obj[key]というような形式で値を取得しましたが、getを利用する事もできます。
test_dict_1 = {'YEAR':'2010', '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': '2010'} ================================= 2010 --------------------------------- 2010 None --------------------------------- 2010 NOT FOUND
getを使用する利点は、ディクショナリ内に対応するkeyが存在しなくてもエラーにはならないことです。dict_obj[key]というような形で取得した場合、keyが存在しないとKeyErrorとなりエラー終了してしまいます。またgetはkeyが存在しなかった場合のデフォルト値を設定することができ、例では’NOT FOUND’という文字列を返すようにしています。
要素の追加
ディクショナリへkeyとvalueの要素を追加する場合は下記の通り記述します。
test_dict_1 = {} print(test_dict_1) print('=================================') test_dict_1['YEAR'] = '2010' test_dict_1['MONTH'] = '1' test_dict_1['DAY'] = '20' print(test_dict_1)
{} ================================= {'MONTH': '1', 'DAY': '20', 'YEAR': '2010'}
空のディクショナリを作成し、その後それぞれのkeyとvalueを追加しています。
要素の削除
ディクショナリから要素を削除する場合はdelを使用します。
test_dict_1 = {'YEAR':'2010', 'MONTH':'1', 'DAY':'20'} print(test_dict_1) print('=================================') del test_dict_1['DAY'] print(test_dict_1)
{'MONTH': '1', 'DAY': '20', 'YEAR': '2010'} ================================= {'MONTH': '1', 'YEAR': '2010'}
delの後に削除を行うkeyを指定します。
keyやvalueだけを取得する
keysを使用するとディクショナリからkeyのみを取得し、リスト化して返されます。またvaluesはvalueのみを取得します
test_dict_1 = {'YEAR':'2010', 'MONTH':'1', 'DAY':'20'} print(test_dict_1) print('=================================') print(test_dict_1.keys()) print(test_dict_1.values())
{'MONTH': '1', 'DAY': '20', 'YEAR': '2010'} ================================= ['MONTH', 'DAY', 'YEAR'] ['1', '20', '2010']
keyとvalueを同時に取得する
itemsを使用するとkeyとvalueを同時に取得することができます。
test_dict_1 = {'YEAR':'2010', 'MONTH':'1', 'DAY':'20'} print(test_dict_1) print('=================================') for key, value in test_dict_1.items(): print(key, value)
{'MONTH': '1', 'DAY': '20', 'YEAR': '2010'} ================================= MONTH 1 DAY 20 YEAR 2010
keyを保持しているの確認
ディクショナリが指定のキーを保持しているかを確認するにはinを利用します。
test_dict_1 = {'YEAR':'2010', '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': '2010'} ================================= True False