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)