Pythonがデータを持つ方法の1つに、辞書(dictionary)型というものがあります。
別記事では、辞書型とはどんなものか?、Pythonでの定義と出力(リンク)、要素の追加と削除(リンク)を扱いました。
今回は、辞書型におけるその他の利用頻度が高そうな操作について、まとめていきます。
辞書型(dictionary型)
定義・出力(リンク)、追加・削除(リンク)を除く辞書型の便利な使い方をまとめます。
要素数の取得
辞書内に存在している要素の数を「長さ」として取得することができます。
取得するには、「len(辞書名)」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
length = len(dict)
print(length)
実行結果:
3
要素の検索
指定した辞書内に、希望する要素(キー)が存在しているかを確認することができます。
検索を行うには、inの演算子を使用します。
なお、返り値は「True」か「False」となります。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
judge1 = ‘one’ in dict
judge2 = ‘four’ in dictprint(judge1)
print(judge2)
実行結果:
True
False
また、明示的に「キー」もしくは「値」を対象に検索をすることもできます。
「キー」を検索する際は「in “辞書名”.keys()」を使用し、「値」を検索する際は「in “辞書名”.values()」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
judge1 = ‘one’ in dict.keys()
judge2 = 3 in dict.values()print(judge1)
print(judge2)
実行結果:
True
True
なお、辞書内にないことの確認もできます。その場合は、「not」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
judge1 = ‘four’ not in dict
judge2 = not ‘five’ in dictprint(judge1)
print(judge2)
実行結果:
True
True
要素の追加(キーが存在している場合は、追加しない)
要素を追加する際に、指定した「キー」が既に辞書に存在している場合は新たに追加せず、存在していなければ追加するということが1つのメソッドでできます。
記載方法は、「辞書名.setdefault(‘キー’, ‘設定したい値’])」です。
「設定したい値」は省略可能です。設定しない場合は、「None」が設定されます。
また、変数に代入した場合は、追加した「キー」に紐づく「値」が代入されます。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
result1 = dict.setdefault(‘four’, 4)
print(result1)
print(dict)result2 = dict.setdefault(‘five’)
print(result2)
print(dict)
実行結果:
4
{‘one’: 1, ‘two’: 2, ‘three’: 3, ‘four’: 4}
None
{‘one’: 1, ‘two’: 2, ‘three’: 3, ‘four’: 4, ‘five’: None}
要素のソート
指定した辞書内の要素の順番を入れ替えることができます。
ソートでは「キー」を並び変えることになり、ソートを行うにはsorted()関数を使用します。
なお、並び変えた後の返り値として、「キー」のみをリストとして返す方法と、「キー」と「値」をセットでリストとして返す方法があります。
前者は「sorted(辞書名)」を、後者は「sorted(辞書名.items())」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
sortResult1 = sorted(dict)
sortResult2 = sorted(dict.items())print(sortResult1)
print(sortResult2)
実行結果:
[‘one’, ‘three’, ‘two’][(‘one’, 1), (‘three’, 3), (‘two’, 2)]
要素を逆順に並べる
逆順にすることが可能です。「dict(reversed(‘辞書名’.items()))」を使用します。
コードサンプル:
dict1 = {‘one’:1, ‘two’:2, ‘three’:3}
reversedDict = dict(reversed(dict1.items()))
print(reversedDict)
実行結果:
{‘three’: 3, ‘two’: 2, ‘one’: 1}
辞書をリストとして取得
辞書として定義された要素は、キーのみのリスト形式で取得することができます。
変換には、「list(辞書名)」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
result = list(dict)
print(result)
実行結果:
[‘one’, ‘two’, ‘three’]
辞書のコピー
辞書の全要素を別の辞書にコピーすることができます。
コピーには、「辞書名.copy()」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
dict1 = dict.copy()
print(dict1)
実行結果:
{‘one’: 1, ‘two’: 2, ‘three’: 3}
イテラブルオブジェクトから辞書を作成
イテラブルオブジェクトを「キー」とし、それぞれの「キー」に共通の値を設定した辞書を作成することができます。
作成には、「fromkeys(イテラブルオブジェクト名, 値)」を使用します。
コードサンプル:
list = [‘one’, ‘two’, ‘three’]
result = dict.fromkeys(list, ‘number’)
print(result)
実行結果:
{‘one’: ‘number’, ‘two’: ‘number’, ‘three’: ‘number’}
なお、「値」を省略し、「fromkeys(イテラブルオブジェクト名)」を使用することもできます。この場合の「値」は「None」となります。
コードサンプル:
list = [‘one’, ‘two’, ‘three’]
result = dict.fromkeys(list)
print(result)
実行結果:
{‘one’: None, ‘two’: None, ‘three’: None}
辞書のキーに渡るイテレータの取得
辞書のキーに渡るイテレータを得ることができます。
取得には、「iter(辞書名)」を使用します。
コードサンプル:
dict = {‘one’:1, ‘two’:2, ‘three’:3}
result = iter(dict)
print(result)
実行結果:
<dict_keyiterator object at 0x000001FFBEFD6890>
まとめ
今回は、pythonの辞書型において、定義と出力、要素の追加・削除を除く利用頻度が高そうな操作について記載しました。
覚えておくと、非常に便利な概念なので、ぜひ参考にしてみて下さい。