【Python】辞書型dictを使う【文法】
今回はメモ的な内容で、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'} '''
新しい辞書としてコピー
新しい辞書としてコピー
d1={"a":"1","b":"2"} print(d1) ''' {'a': '1', 'b': '2'} ''' d2=d1.copy()#コピー print(d2) ''' {'a': '1', 'b': '2'} ''' d2["a"]="3" #コピー先の値を上書きすると print(d2) ''' {'a': '3', 'b': '2'} ''' print(d1)#コピー元の値は更新されない。 ''' {'a': '1', 'b': '2'} '''
Python系記事
- 【Anaconda+Django】 PythonでWebアプリを開発してみる。【環境構築が実は一番ハードル高い?】 - だって楽したいじゃんか!
- 【Python】Pycharmを日本語化する【ぼくは英語ができましぇん】 - だって楽したいじゃんか!
- 【Python】辞書型dictを使う【文法】 - だって楽したいじゃんか!
- 【Anaconda+Django】 PythonでWebアプリを開発してみる【Djangoの設計思想MTVモデル?なにそれおいしいの?編】 - だって楽したいじゃんか!
- 【Anaconda+Django】Django(Python)でWebアプリを開発してみる【チュートリアルも一苦労編】 - だって楽したいじゃんか!
- 【Heroku+Django】DjangoプロジェクトをHerokuにデプロイしてWebサービス化する方法 - だって楽したいじゃんか!