[Python] 辞書(dictionary)に入門する
こんにちは、@yoheiMuneです。
最近はPythonの各機能の入門ばかりブログを書いている気がしますが、基礎に再入門中なのです。本日はPythonの辞書(dictionary)の入門をブログに書きたいと思います。
『入門 Python 3(O'Reilly)』
最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
最近はPythonの各機能の入門ばかりブログを書いている気がしますが、基礎に再入門中なのです。本日はPythonの辞書(dictionary)の入門をブログに書きたいと思います。
目次
辞書(dictionary)のデータ型とは
辞書データ型は、キーと値をペアに持つことができるデータ型です。他の言語では、MapやTable型などという場合もあります。具体的には、以下のようにキーと値を保持することができます。# 例:ユーザー名(=キー)と年齢(=値)を保持する user_dict = { "Yohei": 30, "Mike": 28, "John": 35 }このブログでは、辞書の生成や変更、値へのアクセスなどを取り上げたいと思います。
辞書の生成
辞書の生成方法は色々とあり、具体的には以下のように生成することができます。# 空の辞書を作成する empty_dict = {} print(empty_dict) # {} # 初期値を指定して、辞書を生成する user = { "name": "Yohei", "age": 30 } print(user) # {'age': 30, 'name': 'Yohei'} # tupleからdictへの変換 # tupleの各項目で、値を2つ持っていればdictへ変換できる lol = dict([["a","b"], ["c","d"], ["e","f"]]) print(lol) # {'a': 'b', 'e': 'f', 'c': 'd'} # listからdictへの変換 # 同じく、各要素が値を2つ持っていればOK data = dict([[1,2], [3,4], [5,6]]) print(data) # {1: 2, 3: 4, 5: 6} # リストやタプルの中身は、文字(2文字)でもdictに変換できる data = dict(["ab", "cd", "ef"]) print(data) # {'a': 'b', 'e': 'f', 'c': 'd'} # 2文字のタプル data = dict(("ab", "cd", "ef")) print(data) # {'a': 'b', 'e': 'f', 'c': 'd'}このように辞書の生成は、波カッコ(
{}
)やdict
を用いて行うことができます。キーによる値の変更/追加
辞書はキーを用いて、値の変更や追加などを行うことができます。この辺は基本事項ですね!# 辞書データを生成 user = { "name": "Yohei", "age": 30 } # nameキーを用いて、値を変更する user["name"] = "John" print(user) # {'age': 30, 'name': 'John'} # phoneキーを用いて、値を追加する user["phone"] = "000-0000-0000" print(user) # {'phone': '000-0000-0000', 'age': 30, 'name': 'John'}
updateによる辞書の結合
update
メソッドを使うことで、2つの辞書を1つにまとめることができます。# 辞書の生成 dict_1 = {"a": 1, "b": 2} dict_2 = {"b": 10, "c": 20} # dict_1に、dict_2の内容を追加する # 同じキーがあれば、dict_2の値が優先される dict_1.update(dict_2) print(dict_1) # {'b': 10, 'a': 1, 'c': 20} # dict_2の値は変わらない print(dict_2) # {'b': 10, 'c': 20}
delによる指定したキーの値を削除
delete
関数を使うことで、指定したキーと値を削除することができます。# 辞書の生成 user = {"name": "Yohei", "age": 30} # age項目を削除 del user["age"] print(user) # {'name': 'Yohei'}
全ての要素を削除する
全ての値を削除するには、以下2通りがあります(が、後者の方が楽だしよく使われます)。# clearメソッドで全部削除 user = {"name": "Yohei", "age": 30} user.clear() user {} # 空辞書を変数に代入して、前の値への参照を外す user = {"name": "Yohei", "age": 30} user = {} user {}
値の取得([key]とget())
辞書から値を取得するには、キーに直接アクセスするか、get
関数を使ってアクセスする方法があります。# キーを指定して値を取り出す user = {"name": "Yohei", "age": 30} print(user["name"]) # 'Yohei' # 存在しないキーを指定すると、エラーになってしまう user["email"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'email' # get関数を使っても、値を取得することできる print(user.get("name")) # 'Yohei' # get関数の場合、キーが存在しない場合にも返却する値を指定することができます print(user.get("email", "unknown")) # 'unknown'
keysによる全てのキーを取得
keys
関数を使うことで、辞書内のキーをすべて取得することができます。users = { "Yohei": 30, "John": 21, "Junji": 35 } print(users.keys()) # dict_keys(['Junji', 'John', 'Yohei']) print(list(users.keys())) # ['Junji', 'John', 'Yohei']
values()による全ての値の取得
values
関数を使うことで、辞書内の値をすべて取得することができます。users = { "Yohei": 30, "John": 21, "Junji": 35 } print(users.values()) # dict_values([35, 21, 30]) print(list(users.values())) # [35, 21, 30]
itemsによる全てのキー/値ペアを取得する
items
関数を使うことで、キー/値のペアをすべて取得することができます。users = { "Yohei": 30, "John": 21, "Junji": 35 } print(users.items()) # dict_items([('Junji', 35), ('John', 21), ('Yohei', 30)]) print(list(users.items())) # [('Junji', 35), ('John', 21), ('Yohei', 30)]
copyを使った参照切り離し
copy
関数を使うことで、中身をコピーすることができます。# copyではなく、普通に変数代入した場合には、 # 辞書の中身は共有されるので、片方の値を変えるともう一方の値も変わる dict_1 = {"a": 1, "b": 2} dict_2 = dict_1 dict_1["a"] = 10 print(dict_2) # {'b': 2, 'a': 10} # copyを使うと、辞書の中身までコピーしてくれるので、 # 片方の辞書の変更が、もう一方へ影響を与えない dict_1 = {"a": 1, "b": 2} dict_2 = dict_1.copy() dict_1["a"] = 10 print(dict_2) # {'b': 2, 'a': 1}
参考資料
Pythonの基礎勉強は、以下の書籍を熟読して猛威勉強中です。色々と掲載されていて非常に参考になります。『入門 Python 3(O'Reilly)』
最後に
今日はPythonの辞書(dictionary)の入門記事でした。Pythonの辞書やリストといったデータ型は非常によく使うので、細かい点まで学んでおくとコーディングのスピードアップになっていいですよね!最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!