Pythonの辞書(連想配列)について

辞書の作成

空の辞書の作成は"{}"になります。

変数 = {}
変数aを空の辞書とする例は以下のようになります。
a = {}
print(a)    #=> {}

初期要素がある辞書は、初期要素をカンマ区切りで"{" と"}"で囲んで作成します。 例えば、キーが"name"、値が"yamada"、とキーが"age"、値が20の辞書は以下のようになります。

a = {"name": "yamada", "age": 20}

dict

組み込みクラスdictを使って辞書を作成することができます。

例 キーが"name"、値が"yamada"、とキーが"age"、値が20の辞書は以下で作成できます。

b = dict(name="yamada", age=20)
print(b)   #=> {'name': 'yamada', 'age': 20}

サイズ取得(組み込み関数len)

辞書のサイズ(要素数)を取得する場合、組み込み関数のlenを使います。

print(len({'name': 'yamada', 'age': 20, 'weight': 60}))  #=> 3

追加

新しいキーと値を追加する場合、以下のようにします。

辞書['キー'] = 値
もし同じキーがすでに存在する場合は、上書きになります。
a = {'name': 'yamada', 'age': 20}
a['weight'] = 60
print(a)       #=> {'name': 'yamada', 'age': 20, 'weight': 60}

削除

辞書の要素の削除方法

要素の削除(del)

要素の削除はdel関数を使います。

dict(辞書['キー'])

a = {'name': 'yamada', 'age': 20, 'weight': 60}
del(a['age'])
print(a)      #=> {'name': 'yamada', 'weight': 60}

指定キーの削除と値の取得(pop)

指定キーを削除して、その値を取得する場合、popメソッドを使います。

変数 = 辞書.pop('キー')

a = {"name": "yamada", "age": 20, "weight": 60}
b = a.pop('name')
print(a)    #=>  {"age": 20, "weight": 60}
print(b)    #=>  'yamada' 

全ての要素を削除(clear)

全ての要素を削除する場合、clearメソッドを使います。

辞書.clear()

a = {'name': 'yamada', 'age': 20}
a.clear()
print(a)     #=> {}

マージ(連結)

2つの辞書のマージ方法について

辞書をマージして更新する(update)

ある辞書に他の辞書をマージして、キーや値を更新する場合、updateメソッドを使います。 同じキーがある場合、updateメソッドを実行する辞書が上書きされます。 以下の場合、辞書1と辞書2に同じキーがあれば、辞書2の値で上書きされます。

辞書1.update(辞書2)

例 辞書aに辞書bをマージ

a = {'name': 'suzuki', 'age': 20}
b = {'name': 'honda', 'weight': 60}

a.update(b)
print(a)    #=> {'name': 'honda', 'age': 20, 'weight': 60}
print(b)    #=> {'name': 'honda', 'weight': 60}
updateメソッドを実行する辞書aのキー'name'の値"suzuki"は、辞書bの値"honda"で上書きされていて、 辞書aに存在しないキー"weight"は追加されています。 辞書bは何も変化していません。。

キーや値だけを取得

辞書の全てのキーだけや、全ての値を取得する方法

全てのキーを取得

辞書の全てのキーの所得は、keysメソッドを使います。

a = {'name': 'yamada', 'age': 20, 'weight': 60}
k = a.keys()
print(k)   #=> dict_keys(['name', 'age', 'weight'])

全ての値を取得

辞書の全ての値の所得は、valuesメソッドを使います。

a = {'name': 'yamada', 'age': 20, 'weight': 60}
v = a.values()
print(v)   #=> dict_values(['yamada', 20, 60])