Pythonには辞書(dictionary)というデータ型があります。この辞書はdict型オブジェクトと言われることもあります。
{"apple":1, "orange":2, "banana":3}
定義としてはkey(キー)とvalue(値)がセットになっているリストのようなイメージです。ただ、リストのように、各要素に順番がないのが特徴です。
辞書型オブジェクトの書式
辞書型の一般的な書式は次のようになります。
【書式】
{}の中にkeyとvalueを対応させて書いて行きます。
それぞれのKeyとvalueは、ダブルコロンで繋がれ、カンマで区切られています。
keyとvalueはそれぞれ対応しており、上記だと、key1に対してvalue1が、key2に対してvalue2が、key3に対してvalue3が対応しています。
辞書型では作成後でも要素の追加や削除ができますが、1つの辞書の中に同じkeyは1つしか存在できません。
辞書型オブジェクトの作り方
辞書型オブジェクトは{}の中にkeyとvalueの組み合わせをコロンで区切って書いていくだけです。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # 作成した辞書型オブジェクトを出力 print(mydict)
【出力結果】
今回の例では、mydictという辞書型のオブジェクトが出来上がります。
別の作り方として{}を使わないで、dict()関数を用いて以下のような書式で辞書を作ることも可能です。
【コード例②】リストとタプルの組み合わせをdict()関数の引数として、辞書を作成
# 辞書型オブジェクトを作成 mydict = dict([('apple', 1), ('orange', 2), ('banana', 3)]) # 作成した辞書型オブジェクトを出力 print(mydict)
【出力結果②】
【コード例③】dict()関数にkeyとvalueのペアを=で結んで作成
# 辞書型オブジェクトを作成 mydict = dict(apple=1, orange=2, banana=3) # 作成した辞書型オブジェクトを出力 print(mydict)
【出力結果③】
辞書型オブジェクトの各要素へのアクセス方法
辞書型オブジェクトは、リスト型のように複数の要素を持つことが出来ます。
しかし冒頭でも述べたように、リスト型とは異なり、辞書型オブジェクトには順序がありません。
ですので、任意の値を取り出すためにはkeyで指定することになります。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # appleの値を出力 print(mydict["apple"])
【出力結果】
このコード例では、appleという要素のvalueを調べました。
辞書型オブジェクトの要素を検索する方法
辞書型オブジェクトから任意の要素を検索する場合、keysメソッド、valuesメソッドを使います。
keysメソッド
keysメソッド「.key()」で辞書の中にあるkey全てをリスト型で出力することができます。
【コード例】
# 辞書型オブジェクトを作成 fdict = {"apple":1, "orange":2, "banana":3} # 辞書内にある全てのキーをリスト形式で出力 print(fdict.keys()) # 「orange」というキーがあるかチェック print("orange" in fdict.keys())
【出力結果】
True
valuesメソッド
辞書の中にある全ての値を見たい時はvaluesメソッド「 .value()」が便利です。
.value()を使えば辞書の中にある全ての値をリスト形式で取り出すことができます。
【コード例】
# 辞書型オブジェクトを作成 fdict = {"apple":1, "orange":2, "banana":3} # 辞書にある全ての値をリスト形式で出力 print(fdict.values()) # 「5」という値があるかチェック print(5 in fdict.values())
【出力結果】
False
itemsメソッド
itemsメソッドを使うことで、辞書型の全てのkeyとvalueを取得できます。
itemsメソッドで取得したkeyとvalueの一覧はdict_items型の値として返します。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # 辞書型にある全ての要素を出力 print(mydict.items())
【出力結果】
辞書型オブジェクトに要素を追加する方法
作成済みの辞書に新しくキーや値を追加したり、既にあるキーの値を変更することもできます。
新しいキーと値を追加する
【書式】
作成済みの辞書に対して、新しいキーを指定して値を代入します。
指定したキーが存在しなかった場合、新しい要素として辞書に追加されます。
【コード例】
# 辞書型オブジェクトを作成 fdict = {"apple":1, "orange":2, "banana":3} # 新しい要素「peach」を追加 fdict["peach"] = 4 # 追加後の辞書型オブジェクトを出力 print(fdict)
【出力結果】
こちらのコードでは、新しい要素である「peach:4」を追加しました。
既存のキーに新しい値を上書きする
リストと同じで辞書も後から値を書き換え可能です。(ミュータブル)
作成済みの辞書に対して、既にあるキーを指定すると値を上書きして書き換えることができます。
【書式】
作成済みの辞書に対して、既にあるキーを指定して値を代入します。
指定したキーが存在する場合、新しい値が辞書に上書きされます。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # 要素「apple」の値を上書き mydict["apple"] = 4 # 上書き後の辞書型オブジェクトを出力 print(mydict)
【出力結果】
このコードでは、既にある要素「apple」の値を「4」に上書きしました。
setdefaultメソッド
setdefaultメソッドを使って、新しい要素を追加することも出来ます。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # 新しい要素「peach」を追加 mydict.setdefault("peach", 4) # 追加後の辞書型オブジェクトを出力 print(mydict)
【出力結果】
setdefaultメソッドは、2つの引数を受け取ります。
第1引数は要素のkey、第2引数は要素のvalueです。
keyが存在する場合、値は更新されずに既存の値のままです。
keyが存在しない場合、引数のkeyとvalueを新しく辞書に追加します。
辞書型オブジェクトの中に辞書型を追加する
既存の辞書型オブジェクトに、別の辞書型オブジェクトを要素として追加することも可能です。
作成済みの辞書に対して、新しくキーを指定して追加したい辞書名を代入します。
【コード例】
# 辞書型オブジェクト1を作成 mydict1 = {"apple":1, "orange":2, "banana":3} # 辞書型オブジェクト2を作成 mydict2 = {"peach":4, "cherry":5, "melon":6} # 辞書型1の中に辞書型2を追加 mydict1["dict"] = mydict2 # 追加後の辞書型オブジェクト1を出力 print(mydict1)
【出力結果】
新しく要素を追加する方法と同じで、値の部分に辞書型オブジェクトを指定するだけです。
今回は辞書型オブジェクト「mydict2」を追加しました。
dictというkeyに結び付けられた値は{}の中に含まれているので、
辞書型オブジェクトであることが確認できます。
updateを使って他の辞書と統合
既にあるキーの値は上書き、存在していないキーは値ごと辞書に追加されます。
【コード例】
# 1つ目の辞書型オブジェクトを作成 mydict = {'x': 10, 'y': 20} # 2つ目の辞書型オブジェクトを作成 mydict2 = {'x': 1000, 'j':500} # 2つの辞書型オブジェクトを結合 mydict.update(mydict2) # 追加後の辞書型オブジェクトを出力 print(mydict)
【出力結果】
辞書型オブジェクトから要素を削除する方法
辞書型の中にある要素を削除するには、popメソッド、clearメソッドを使います。
指定したkeyを削除するpopメソッド
popメソッドで引数にkeyを指定すると、指定したkeyが辞書から削除されます。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # orangeの要素を削除 mydict.pop("orange") # 削除後の辞書型オブジェクトを出力 print(mydict)
【出力結果】
すべての要素を削除するclearメソッド
clearメソッドでは、指定した辞書オブジェクトにある全ての要素が一掃されます。
【コード例】
# 辞書型オブジェクトを作成 mydict = {"apple":1, "orange":2, "banana":3} # 辞書型のすべての要素を削除 mydict.clear() # 削除後の辞書型オブジェクトを出力 print(mydict)
【出力結果】
辞書型オブジェクト内にある要素の並び替え
sortedメソッドを使うことで、keyを昇順にソートすることができます。
ただし、返ってくる値はリスト型になるので注意しましょう。
key昇順ソート
辞書型オブジェクトにあるキーと要素のペアを、keyの値が小さい順に並び変えます。
【コード例】
# 辞書型オブジェクトを作成 dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40} # keyの値が小さい順にソート dic2 = sorted(dic.items()) print(dic2)
【出力結果】
key降順ソート
辞書型オブジェクトにあるキーと要素のペアを、keyの値が大きい順に並び変えます。
【コード例】
# 辞書型オブジェクトを作成 dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40} # keyの値が大きい順にソート dic2 = sorted(dic.items(), reverse=True) print(dic2)
【出力結果】
value昇順ソート
辞書型オブジェクトにあるキーと要素のペアを、valueの値が小さい順に並び変えます。
【コード例】
# 辞書型オブジェクトを作成 dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40} # valueの値が小さい順にソート dic2 = sorted(dic.items(), key=lambda x:x[1]) print(dic2)
【出力結果】
value降順ソート
辞書型オブジェクトにあるキーと要素のペアを、valueの値が大きい順に並び変えます。
【コード例】
# 辞書型オブジェクトを作成 dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40} # valueの値が大きい順にソート dic2 = sorted(dic.items(), key=lambda x:x[1], reverse=True) print(dic2)
【出力結果】
コメント