【SikuliX】【Python】辞書型を使ってみよう~便利な構文~

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 dict

print(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 dict

print(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の辞書型において、定義と出力、要素の追加・削除を除く利用頻度が高そうな操作について記載しました。

覚えておくと、非常に便利な概念なので、ぜひ参考にしてみて下さい。

スポンサーリンク