Pythonの辞書の扱い方について解説します。
辞書は、キーとなる値(key)とバリューとなる値(value)をセットで1つの要素として持つことができます。この辞書を利用する事で、あるデータ(key)に対応する関連データ(value)を登録できるようになります。
実際の英単語の辞書などでは、調べたい単語「Black」(キー) に対して、結果として「黒」(値) を返します。Pythonの辞書もこのようなイメージになります。
辞書を作成する
辞書は { } の間に、複数の要素をカンマ(,)で区切って、キー:値
定義します。
1 2 3 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} print(dict_temp) # {'black':'黒', 'white':'白', 'red':'赤'} |
また辞書の値にはリストやタプルを入れることもできます。
1 2 3 | dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} print(dict_temp) # {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.3GHz'], 'Memory': '8GB'} |
辞書から要素を取得する
辞書の要素を取得するには、取得したい要素に対応するキーを指定することで取得することができます。
1 2 3 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} print(dict_temp['white']) # 白 |
辞書内のリストを操作する
辞書内リストの要素を取得する場合は、 以下のように指定します。
1 2 3 | dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} print(dict_temp['CPU'][0]) # Intel Core i5 |
またリストの要素は後から変更が可能です。
以下の例では辞書の2番目の要素にリストを格納し、後からリストの1番目の要素を変更しています。
1 2 3 4 5 6 7 8 | dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} print(tuple_temp) # {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'], 'Memory': '8GB'} dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} dict_temp['CPU'][1] = '3.4GHz' print(tuple_temp) # {'OS': 'Windows11', 'CPU': ['Intel Core i5', '3.4GHz'], 'Memory': '8GB'} |
要素の指定の方法は2次元配列の操作と同じで、dict_temp['CPU']
で辞書の2番目の要素であるリスト['Intel Core i5', '2.8GHz']
を取り出し、さらに[1]
でリストの2番目の要素を指定して、'3.4GHz'
を代入しています。
次に辞書内リストに要素を追加してみます。
要素を追加するには、リストの操作と同様にappend()
メソッドを使用します。
1 2 3 4 | dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} dict_temp['CPU'].append('4Core') print(dict_temp) # {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz', '4Core'], 'Memory': '8GB'} |
・関連記事:リスト(配列)- リストに要素を追加する
辞書の要素数を調べる
辞書の要素数を調べる場合は、len()
メソッドを使用します。要素数は キー:値 のセットの数をカウントし、値の要素に含まれるリスト等の要素数はカウントされません。
1 2 3 4 5 6 7 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} print(len(dict_temp)) # 3 dict_temp = {'OS': 'Windows11', 'CPU': ['Intel Core i5', '2.8GHz'] , 'Memory': '8GB'} print(len(dict_temp)) # 3 |
辞書の追加と変更
辞書に要素を追加するときは、以下のように記述します。
1 2 3 4 5 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} dict_temp['blue'] = '青' print(dict_temp) # {'black': '黒', 'white': '白', 'red': '赤', 'blue': '青'} |
値を変更する場合も同じように記述します。
1 2 3 4 5 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤', 'blue':'青'} dict_temp['blue'] = 'あお' print(dict_temp) # {'black': '黒', 'white': '白', 'red': '赤', 'blue': 'あお'} |
要素の削除
辞書の要素を削除するにはdel文を使用します。
1 2 3 4 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤', 'blue':'青'} del dict_temp['blue'] print(dict_temp) # {'black': '黒', 'white': '白', 'red': '赤'} |
指定した要素が存在しない場合は、keyerror というエラーが発生します
1 2 3 4 5 6 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} del dict_temp['yellow'] # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # KeyError: 'yellow' |
辞書内の要素を検索する
辞書内に特定のキーが存在するか調べる場合は、in
演算子を使用します。
キーが存在する場合はTrue
、存在しない場合はFalse
を返します。
1 2 3 4 5 6 7 | dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} print('red' in dict_temp) # True dict_temp = {'black':'黒', 'white':'白', 'red':'赤'} print('yellow' in dict_temp) # False |
辞書の要素をソートする
辞書を並べ替えるには、items()
メソッドでキーと値の組み合わせを取得してから、sorted()
関数に渡します。並び替えた結果はタプルのリストとして出力されます。
リストでは並び替えた状態に更新されるsort()
が使用できますが、辞書では使用できません。
・関連記事:リスト(配列)
キーで並び替えるには以下のように記述します。
1 2 3 4 | dict1 = {2:'blue', 1:'red', 3:'yellow'} dict2 = sorted(dict1.items()) print(dict2) # [(1, 'red'), (2, 'blue'), (3, 'yellow')] |
デフォルトは昇順に並び替えます。降順に並び替える場合は引数にreverse=Trueを指定します。
1 2 3 | dict3 = sorted(dict1.items(), reverse=True) print(dict3) # [(3, 'yellow'), (2, 'blue'), (1, 'red')] |
値で並び替えるには、ラムダ式を用いて以下のように記述します。
sorted()
の第二引数key
でソートの基準を変更する事ができます。そこにラムダ式lambda x:x[1]
で2番目の要素を指定することで、値で並び替えることができます。
1 2 3 4 5 6 7 | dict4 = sorted(dict1.items(), key=lambda x:x[1]) print(dict4) # [(3, 'yellow'), (2, 'blue'), (1, 'red')] dict5 = sorted(dict1.items(), key=lambda x:x[1], reverse=True) print(dict5) # [(3, 'yellow'), (1, 'red'), (2, 'blue')] |
Pythonの辞書について解説しました。