Python_ディクショナリ

ディクショナリの生成

ディクショナリの生成は、dict()や{}を用います。


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8

import sys


def main():
    # 空ディクショナリの生成
    dic = {}      # {}
    dic = dict()  # {}

    # 初期値指定ディクショナリの生成
    dic = {'key1': 1, 'key2': 2}  # {'key1': 1, 'key2': 2}
    dic = {1: "str1", 2: "str2"}  # {1: 'str1', 2: 'str2'}

    # キーワード引数による初期化
    dic = dict(key1="value1", key2="value2")

    # keyが重複すると後方上書きされます。
    dic = {1: "str1", 1: "str2"}  # {1: 'str2'}


if __name__ == "__main__":
    sys.exit(main())

ディクショナリの要素追加・更新

登録済のキーが指定されると、値を変更しますので注意が必要です。


# 要素を追加します。
dic["key1"] = "value1"  # {'key1': 'value1'}
dic["key2"] = "value2"  # {'key1': 'value1', 'key2': 'value2'}

# 同一キーは上書きされます。
dic["key1"] = "value3"  # {'key1': 'value3', 'key2': 'value2'}

# キーが存在するか判定して追加します。
if "key3" not in dic.keys():
    dic["key3"] = "value4"  # {'key3': 'value4', 'key1': 'value3', 'key2': 'value2'}

setdefault()

setdefault()を用いると、辞書にキーが存在しないときにのみキーと値のペアを新規追加します。

if文で要素の存在確認する必要がなくなります。


# keyが存在していれば何もしません。
dic.setdefault("key1", "value5")  # {'key1': 'value1'}

# keyが存在しなければ要素を追加します。
dic.setdefault("key5", "value5")  # {'key1': 'value1', 'key5': 'value5'}

ディクショナリの要素削除

delメソッドで要素を削除します。


dic = {"key1": 1, "key2": 2, "key3": 3}

# keyを指定して要素を削除します。
del dic["key1"]  # {'key2': 2, 'key3': 3}

# 全要素をクリアします。
dic.clear()      # {}

ディクショナリの要素参照

値の参照

キーを使って要素を参照します。存在しないキーを指定するとKeyErrorとなります。


dic = {"key1": 1, "key2": 2, "key3": 3}

# キーを指定して値を参照します。
dic["key1"]   # 1
#dic["key4"]  # エラーとなります。

# キーの存在確認はinを用います。
"key1" in dic  # True
"key4" in dic  # False

一覧取得

辞書型は要素間に順序を持たないので、格納した順番に出力されません。キーを使って各要素を識別します。


dic = {"key1": 1, "key2": 2, "key3": 3}

# すべてのキーを取得する。    
dic.keys()    # dict_keys(['key2', 'key3', 'key1'])

# すべての値を取得する。
dic.values()  # dict_values([3, 2, 1])

# すべてのキーと値を取得する。
dic.items()   # dict_items([('key1', 1), ('key2', 2), ('key3', 3)])

# すべての要素にアクセスする場合は下記のように書けます。
for key, value in dic.items():
    print("key=", key, " : value=", value)


関連ページ