DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPython入門
  4. 辞書 ー ゼロから始めるPython入門【Vol.12】

辞書 ー ゼロから始めるPython入門【Vol.12】

辞書はキーと値がワンセットのリストです。キーは文字列が使えます。キーの値は重複できません。またリストやタプルと違いデータの順番は管理されません。ひとつの袋にごちゃまぜにデータがはいっているイメージです。

実行対話モードでコードを書いてみましょう。
Windowsはコマンドプロンプト、Macはターミナルを起動します。Windowsは「python」、Macは「python3」と入力して[Enter]キーをおします。
対話実行モードに切り替わります。

{}の中に、キー:値をワンセットにカンマで区切って定義していきます。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> dict
{'age': 20, 'name': '田中一郎', 'hobby': '将棋'}

上記のように辞書を表示すると、順番は定義時と異なります。

値の取り出し方

取り出す時は、角括弧にキーを指定します。

>>> dict["name"]
'田中一郎'

辞書に存在しないキーを指定するとエラーになります。

>>> dict["address"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'address'

get()関数を使う方法もあります。

>>> dict.get("name")
'田中一郎'

get()関数の場合、存在しないキーを指定した場合、エラーにはなりません。
第2引数にデータを渡すと、キーがない場合、その値が出力されます。

>>> dict.get("address", "キーが存在しません")
'キーが存在しません'

辞書はリストと同じく、追加、削除、変更が可能です。

値の追加

値を後から追加ができます。

>>> dict["address"] = "埼玉県"
>>> dict
{'age': 20, 'name': '田中一郎', 'hobby': '将棋', 'address': '埼玉県'}

値の変更

重複したキーで代入するとエラーにはならず、値が新しい値で上書きされます。

>>> dict["address"] = "香川県"
>>> dict
{'age': 20, 'name': '田中一郎', 'hobby': '将棋', 'address': '香川県'}

辞書と辞書の結合

update()を使えば、辞書と辞書を結合ができます。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> dict2 = {"address": "埼玉県", "nickname": "イチロー"}
>>> dict.update(dict2)
>>> dict
{'age': 20, 'nickname': 'イチロー', 'name': '田中一郎', 'hobby': '将棋', 'address': '埼玉県'}

この場合もキーが重複した場合、2つめの辞書の値で上書きされます。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> dict2 = {"address": "埼玉県", "name": "小林一郎"}
>>> dict.update(dict2)
>>> dict
{'age': 20, 'name': '小林一郎', 'hobby': '将棋', 'address': '埼玉県'}

辞書のキーは重複ができないのです。

特定の要素を削除する

del文で要素を削除できます。

>>> del dict["address"]
>>> dict
{'age': 20, 'name': '田中一郎', 'hobby': '将棋'}

スポンサーリンク

すべての要素を削除する

clear()を使うとすべての要素を削除できます。

>>> dict.clear()
>>> dict
{}

辞書のデータが空になります。{}で上書きしても、空にできます。

>>> dict = {}
>>> dict
{}

特定のキーがあるかどうかの確認

inを使うと、特定のキーがあるかどうかを確認できます。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> "name" in dict
True
>>> "address" in dict
False

すべてのキーを取得する

keys()ですべてのキーを取得できます。list()でくるむことで、キーだけの値のリストへ変換が可能です。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> list(dict.keys())
['age', 'name', 'hobby']

すべての値を取得する

values()ですべての値を取得できます。list()でくるむことで、値だけのリストへ変換が可能です。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> list(dict.values())
[20, '田中一郎', '将棋']

dict_items型への変換

items()を使うと、イテラブルオブジェクトであるdict_items型に変換できます。
内部ではキーと値が一つのタプルになっていて、全体はリストになっています。
dict_items型のままでは出力ができません。

KeyError: '埼玉県'
>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> dict.items()
dict_items([('age', 20), ('hobby', '将棋'), ('name', '田中一郎')])
>>> type(dict.items())

for文で別なタプルにとりだし、出力ができます。

dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}

for (key, value) in dict.items():
    print(key + ":" + str(value))

もしくはlist()に変換して、リスト型に変換すると、出力することができます。

>>> dict = {"name": "田中一郎", "hobby": "将棋", "age": 20}
>>> list = list(dict.items())
>>> list[0][0]
'age'
>>> list[0][1]
20
>>> list[1][0]
'hobby'
>>> list[1][1]
'将棋'
>>> list[2][0]
'name'
>>> list[2][1]
'田中一郎'

キーワード可変長引数

引数に任意の要素数の辞書を渡すことができます。定義側の変数の頭に**をつけます。

quit()とタイプして[Enter]キーをおして実行対話モードを終了します。
Atomを起動します。[ファイル]メニュー→[新規ファイル]をクリックします。[ファイル]メニュー→[保存]をクリックします。Vo.3につくった「python-study」フォルダ内に、「dict1.py」というファイル名で保存します。

def person(**kargs):
    print(kargs["name"])
    print(kargs["hobby"])

person(name="田中一郎", hobby="将棋")

実行すると、下記が出力されます。

田中一郎
将棋

スポンサーリンク

関連記事

プロフィール

DESIGNMAP
制作ディレクター
お問い合わせ