だって楽したいじゃんか!

大学院(機械工学科)を首席で卒業した男がこれまでの経験を生かさず殺さず発信していく

【Python】辞書型dictを使う【文法】

f:id:makimakimakino:20190114112302p:plain

今回はメモ的な内容で、Pythonの文法(辞書型)の話になります。

配列と辞書型の違い

データをまとまって扱える変数に配列と辞書があります。

配列は要素の[順序]に意味を持たせ、先頭からn番目というように要素を指定する特徴があります。

配列は変数名と数字しか情報がないので、他人が書いたコードをデバッグしている最中や、バグ修正でソースを読み返したときに、「この配列のn番目ってどんな値が入ってくることを想定してくるんだっけなー」とコードを読み解いていくということが必要な場合があります。

一方で、辞書型(連想配列、ハッシュとも呼ぶ)は順番はそれほど需要ではなく、意味付けされた[キー]によってデータ集合を扱うことができるという特徴を持ちます。

今回は後者の辞書型の使い方について(個人的に)よく使う使い方をまとめます。

使い方

宣言(空)



d={}

print(d)
print(type(d))

'''
{}
<class 'dict'>
'''


宣言(初期化)


宣言(初期化)

d={"key":"value"}
print(d)

'''
{'key': 'value'}
'''


キーとバリューの追加


キーとバリューの追加

d={"key":"value"}
d["k"]="v"
print(d)

'''
{'key': 'value', 'k': 'v'}
'''


バリューに数字や配列、辞書型を指定


バリューに数字や配列、辞書型を指定

d={"key":"value"}
d["num"]=123
d["array"]=[1,2,3,4]
d["dict"]={"kd1":"vd1" , "kd2":"vd2"}
print(d)

'''
{'key': 'value', 'num': 123, 'array': [1, 2, 3, 4], 'dict': {'kd1': 'vd1', 'kd2': 'vd2'}}
'''


キーに数字を使用


キーに数字を使用

d={"key":"value"}
d[1]=321
print(d)

'''
{'key': 'value', 1: 321}
'''


キーを使って値を取得


キーを使って値を取得

d={"key":"value"}
print(d["key"])
'''
value
'''

print(d.get("key"))

'''
value
'''


キーを使って値を取得(キーが存在しない場合)


キーを使って値を取得(キーが存在しない場合)

d={"key":"value"}
print(d["k"])#この指定の仕方だとKeyErrorが発生

'''
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-110-d1ee25325af3> in <module>()
      1 #キーを使って値を取得(キーが存在しない場合)
      2 d={"key":"value"}
----> 3 print(d["k"])#この指定の仕方だとKeyErrorが発生

KeyError: 'k'
'''

print(d.get("k"))#デフォルトではNoneを返す。

'''
None
'''

print(d.get("k","ないよ"))#第2引数にオプションを追加すると、キーが存在しない場合、にオプションとして指定した値を返す。

'''
ないよ
'''


値の上書き


値の上書き

d={"key":"value"}
print(d)

'''
{'key': 'value'}
'''

d["key"]="value_of_key"
print(d)

'''
{'key': 'value_of_key'}
'''


辞書の結合


辞書の結合

d1={"a":"1","b":"2"}
d2={"b":"3","c":"4"}
d1.update(d2)#キーがかぶっている場合は値を上書き
print(d1)

'''
{'a': '1', 'b': '3', 'c': '4'}
'''


要素の削除


要素の削除

d1={"a":"1","b":"2"}
print(d1)

'''
{'a': '1', 'b': '2'}
'''

del d1["a"]
print(d1)

'''
{'b': '2'}
'''


要素の全削除


要素の全削除

d1={"a":"1","b":"2"}
print(d1)

'''
{'a': '1', 'b': '2'}
'''

d1.clear()
print(d1)
'''
{}
'''


キーの存在確認


キーの存在確認

d1={"a":"1","b":"2"}
print("a" in d1)

'''
True
'''

print("c" in d1)

'''
False
'''


キーの一括取得


キーの一括取得

d1={"a":"1","b":"2"}
print(d1.keys())#dict_keys型

'''
dict_keys(['a', 'b'])<200b>
'''

for k in d1.keys():#ループで1つずつ取り出せる。
    print("key:%s" % k)

'''
key:a
key:b
'''

print(list(d1.keys()))#リストに変換

'''
['a', 'b']
'''


値の一括取得


値の一括取得

d1={"a":"1","b":"2"}
print(d1.values())#dict_values型

'''
dict_values(['1', '2'])
'''

for v in d1.values():#ループで1つずつ取り出せる。
    print("value:%s" % v)

'''
value:1
value:2
'''

print(list(d1.values()))#リストに変換

'''
['1', '2']
'''


キーと値のペアを全取得


キーと値のペアを全取得

d1={"a":"1","b":"2"}
print(d1.items())#dict_items型

'''
dict_items([('a', '1'), ('b', '2')])
'''

for k,v in d1.items():#ループで1つずつ取り出せる。
    print("key:%s value:%s" % (k,v))

'''
key:a value:1
key:b value:2
'''
    
print(list(d1.items()))#リストに変換

'''
[('a', '1'), ('b', '2')]
'''


辞書オブジェクトのコピー


辞書オブジェクトのコピー

d1={"a":"1","b":"2"}
print(d1)

'''
{'a': '1', 'b': '2'}
'''

d2=d1#コピー
print(d2)

'''
{'a': '1', 'b': '2'}
'''

d2["a"]="3" #コピー先の値を上書きすると
print(d2)

'''
{'a': '3', 'b': '2'}
'''

print(d1)#コピー元の値も更新される。

'''
{'a': '3', 'b': '2'}
'''