辞書型(ディクショナリー)の基本的な使い方
pythonの辞書型(ディクショナリー)は、Javaなどで用いるMapのようなものでキーに対する値を紐づけて用いる。
辞書型の特徴には、以下のようなものがある。
- Mutableで値を変更できる
- 動的で値を追加したり、削除したりできる
- ネストして、辞書の中にリスト、辞書の中に辞書などを格納できる
- 辞書のキーにするにはそのインスタンスがハッシュ化可能である必要がある(数値、文字列、タプルなど)
pythonでは、以下のように宣言する。
実際に値を入れて取り出すには以下のように行う。
- 辞書を作成して、値を取り出す
car = { "brand": "Toyota", "model": "Prius", "year": 2015 } # 辞書型を作成
type(car) # <class 'dict'>
# 変数['キー']または、変数.get('キー')とすることで値を取り出す
下の例では、Toyotaと表示される
print(car['brand'])
print(car.get('brand'))
print(car['country']) # キーが存在しない場合、KeyError
print(car.get('country')) # getを利用した場合、キーがなければNoneが返る
- 色んな型のオブジェクトを辞書に挿入する
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}
- 辞書の中の値を変更・追加する
car['country'] = 'Japan' # 変数['キー']=値として、新たにキーに値を追加する
- キーが存在するか確認する
辞書(ディクショナリー)からキー、バリュー一覧を取り出す
辞書型では、キーだけ、バリューだけのような形で値を取り出すことができる。
以下に、辞書から、キー、バリューをそれぞれ取り出す方法について記載する。
- キーとバリュー、それぞれと両方を取り出す方法
car.keys() # carのキー'brand', 'model', 'year'が返される(dict_keys型)
list(car.keys()) # リスト型に変換
car.values() # carの値'Toyota', 'Prius', 2015が返される (dict_values型)
list(car.values()) # リスト型に変換
car.items() # carのキーとバリューがそれぞれが返される (dict_items型)
list(car.items()) # リストの中に、タプルが入っている形([('brand', 'Toyota'), ('model', 'Prius'), ('year', 2015)])
- キーとバリューを取り出してループ
print("key = {}, value = {}".format(key,value))
# key,valueをそれぞれ取り出し、ループする
辞書型(ディクショナリー)のその他のメソッド
辞書型のその他の重要なメソッドとして、update,del,pop,popitem,clearがある
以下に辞書型の関数の使い方を記載する
- 辞書の各メソッドの利用方法(update, del, pop, popitem, clear)
car.update({'country': 'japan','prefecture': 'Aichi'}) # 辞書carにcountryとprefectureを値と共に追加
# 最後に追加した要素を削除(この場合、city)、python3.7より前では、任意の値を削除
car['city'] = 'Toyota-shi'
value = car.popitem() # ('city', 'Toyota-shi')とタプルにして返却
value = car.pop('prefecture') # 指定したキーを削除する。また、この場合valueにaichiが入る。
car.clear() # carに入った値が全て削除される。
del car # 辞書carが削除される。
dictコンストラクタを用いて、別の型から辞書型に変換する
dictコンストラクタを用いて、2重のタプル、リストを辞書型に変換できる。
具体的には、以下のように行う。
- dictコンストラクタを用いて、リスト * タプルを辞書型に変換
('巨人', 'ジャイアンツ'),
('ヤクルト', 'スワローズ'),
('横浜', 'DeNAベイスターズ'),
('中日', 'ドラゴンズ'),
('阪神', 'タイガース'),
('広島', 'カープ'),
])
type(Central_Leagues) # <class 'dict'>
- dictコンストラクタを用いて、2重のリストを辞書型に変換
['巨人', 'ジャイアンツ'],
['ヤクルト', 'スワローズ'],
['横浜', 'DeNAベイスターズ'],
['中日', 'ドラゴンズ'],
['阪神', 'タイガース'],
['広島', 'カープ'],
])
type(Central_Leagues) # <class 'dict'>
- dictコンストラクタを用いて、2重のタプルを辞書型に変換
('巨人', 'ジャイアンツ'),
('ヤクルト', 'スワローズ'),
('横浜', 'DeNAベイスターズ'),
('中日', 'ドラゴンズ'),
('阪神', 'タイガース'),
('広島', 'カープ'),
))
type(Central_Leagues) # <class 'dict'>
【2020年版】: Python 3.8 データ構造、文法、アルゴリズム、オブジェクト指向、ライブラリ、完全マスター講座