Pythonでのdict(辞書)を作成する方法は?
19/02/11 17:57:02 19/02/11 21:46:29
dict(辞書)型とは、keyとvalueをセットで含むデータ型で、{}で囲みます。なぜ辞書型と呼ぶのかというと、keyで検索することでvalueを取り出せるからです。
辞書型は特にシステム規模が大きくなると便利な概念で、Python以外のプログラミング言語でも用いられる概念です。
このページではPythonの辞書型について解説しますが、その他の言語でも考え方は同じなので、ぜひ表面的なコードだけではなくアルゴリズムの一つとして捉えておいてください。
目次
dict(辞書)型の基本的な使い方
dict(辞書)型の構文は以下です。
{key1:value1,key2:value2,key3:value3}
key:valueというのが1セットになっており、それぞれのセットを「,」で区切っています。
辞書型のオブジェクトのサンプルコードを紹介します。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
たとえば古典的なギャグを格納する辞書型オブジェクトを作成すると、上記のようになります。keyに対して1から順にvalueを振っていますが、リスト型のように要素が順番に格納されているわけではありません。
つまり、メモリの番地は必ずしも要素を格納した順番通りになっているとは限らないということです。そのため、dict(辞書)型の要素に何らかの処理を加える場合、リスト型のように要素番号で指定することはできません。
dict(辞書)型にアクセスする方法
dict(辞書)型オブジェクトでvalueを取り出す方法を紹介します。指定方法はそれほど難しくないので、サンプルコードをさっそく紹介します。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
val = sampleDict ["ai-n"]
print(val)
上記のソースコードを実行すると、「1」が出力されます。dict(辞書)型を作成する際は{}で囲いますが、要素へのアクセスでは[]で囲います。カッコの種類を間違えるとエラーになるので、注意したいポイントです。
プログラミングはロジックだけでなくこういった細かいルールでつまづくことが案外多いため、普段は大雑把な方でも、プログラミングのときだけは細かな注意が必要になります。
dict(辞書)型を検索する方法
dict(辞書)型の作成、アクセスと紹介してきましたが、次に検索の方法を紹介します。アクセスと何が違うのかと思われるかもしれませんが、戻り値が異なります。アクセスではkeyを指定してvalueを取得しましたが、検索ではkeyを指定することでTrueかFalseを取得します。
サンプルコードを確認しましょう。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
print("ai-n" in sampleDict.keys())
上記のソースコードを実行すると、Trueが返ってきます。dict(辞書)型のkeys関数を使用することで、指定したkeyがdict(辞書)型に含まれているかどうかを確認しました。同様に、valueがdict(辞書)型に含まれているかどうかを確認することも可能です。
以下のサンプルコードのようになります。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
print(4 in sampleDict.values())
このソースコードを実行すると、Falseが返ってきます。valueは1、2、3となっているため、4はないからです。valueを指定する場合の関数はvalues、keyを指定する場合の関数はkeysになります。
dict(辞書)型に要素を追加する方法
次にdict(辞書)型に要素を追加する方法です。keyとvalueをセットで指定します。サンプルコードは以下です。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
sampleDict ["daffunda"] = 4
print(sampleDict)
上記のソースコードを実行すると、以下のようにdaffundaが追加されます。
{“ai-n”:1, “kyai-n”:2, “dacchu-no”:3, “daffunda”:4}
ポイントは[“daffunda”] = 4の部分で、[]のなかにkeyを指定し、=の右側にvalueを指定しています。またまったく同じことをsetdefault関数を使用して実現することもできます。サンプルコードは以下です。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
sampleDict.setdefault("daffunda", 4)
print(sampleDict)
このソースコードを実行すると、以下のようにコンソール出力されます。
{“ai-n”:1, “kyai-n”:2, “dacchu-no”:3, “daffunda”:4}
setdefault関数は引数の一つ目にkeyを指定し、二つ目にvalueを指定します。そうすると、要素が追加されました。
dict(辞書)型の要素を削除する方法
要素を削除するには、二つの関数が使えます。pop関数とclear関数です。
pop関数で要素を削除する
pop関数で要素を削除するサンプルコードは以下です。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
sampleDict("ai-n ")
print(sampleDict)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
{“kyai-n”:2, “dacchu-no”:3}
pop関数によって、keyで指定した要素のkeyとvalueが削除されました。
clear関数で要素を削除する
次に、clear関数で要素を削除します。pop関数は指定した要素を削除する関数でしたが、clear関数は要素の指定はなく、すべての要素が削除されます。サンプルコードは以下です。
sampleDict = {"ai-n":1, "kyai-n":2, "dacchu-no":3}
sampleDict.clear()
print(sampleDict)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
{}
すべての要素が削除されました。
dict(辞書)型の要素をソートする
dict(辞書)型はkeyとvalueがあるだけで順番はないのですが、ソートして順番を指定することも可能です。以下のサンプルコードのようになります。
sampleDict = {2:"ai-n",1: "kyai-n",3: "dacchu-no"}
sortedDict = sorted(sampleDict.items())
print(sortedDict)
これを実行すると、以下のようにコンソール出力されます。
[(1, ‘ kyai-n’), (2, ‘ ai-n’), (3, ‘ dacchu-no’)]
昇順にソートされました。
まとめ
以上、dict(辞書)型の解説を行いました。
配列と比べると使用頻度はやや低いかもしれませんが、valueとkeyをセットで格納できるメリットは大きいです。
配列の場合要素数の変動によってインデックスが変わってしまいますが、dict(辞書)型であれば要素数が変わってもその他の要素に影響を与えません。
このようなメリットがあるので、使い方を把握しておくと便利です。
人気記事