Contents
今回はPythonの辞書と呼ばれるデータ構造であり型をやっていきます。
他の言語では連想入れとかkey valueペアとかオブジェクトとか、呼び方が微妙にいろいろあります。
辞書か連想配列って呼ぶのが無難です。
Pythonで辞書型(連想配列)とは何か
とりあえず具体例
説明するよりも見るほうが早いと思うので、みていきましょう。
dict_example = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
print(dict_example)
書き方は、{“key1”: “value1”}みたく書きます。
辞書型の特徴
- 配列と違って、並びがない
- 配列は[1,2,3]って書いたら、1の後ろに2があってその後ろに3があるっていう順番があったけど、辞書にはない
- なので、インデックス番号で取り出せない
- 基本的にはkeyからvalueを取り出す
- データの塊を1個の変数で扱える
データの塊のところだけもう少し深掘りすると、以下のようなコードと違いを見てみると分かりやすいかと思います。
- 変数でmanziの情報を適当に表現するとこうなる
変数を4つ用意して、入れてやってます。
- 辞書でmanziの情報を表現するとこうなる
1個の変数に情報をまとめられて、便利じゃね?って徐々に思うこともあります。
辞書型を書いてみる
1. 辞書を定義して値を取り出してみる
manzi = {
"name": "まんじ",
"age": 27,
"height": 177.5,
"weight": 65
}
print(manzi["name"])
print(manzi["age"])
print(manzi["height"])
print(manzi["weight"])
解説です。
- manzi = {“key”: “value”,…}の部分で、まず辞書を定義してます
- 次にprintを使って、manzi[“key”]の形で全部1個1個取り出して終わりです
2. 辞書を定義して値を書き換えてみる
manzi = {
"name": "まんじ",
"age": 27,
"height": 177.5,
"weight": 65
}
manzi["name"] = "まんじこちゃん"
manzi["age"] = 36
manzi["height"] = 12
manzi["weight"] = 155
print(manzi["name"])
print(manzi["age"])
print(manzi["height"])
print(manzi["weight"])
解説です。
- manzi = {“key”, “value”, …}のところで辞書定義
- manzi[“name”] = “まんじこちゃん”らへんで、keyに対して、valueを上書き
- printで出力して終わり
ちょっと解説が雑な気がするんですけど、variable[“key”] = “value”って感じで書き換えられます。
3. 辞書を定義してループで回してみる
manzi = {
"name": "まんじ",
"age": 27,
"height": 177.5,
"weight": 65
}
for key in manzi:
print("valueが", manzi[key])
解説です。
- manzi = {“key”: “value”,…}のところで辞書を定義
- for key in manzi:の部分で、配列みたくループを回してます
- 配列の場合は要素が順番に先頭から取り出されてループが回されましたが、辞書の場合はkeyがループで回ってでてきます
- 一応、辞書も順番に先頭から出てきてますが、並び順は保証されていません
- manzi[key]で、辞書のkeyからvalueを取り出してます
補足なんですけど、こういうふうにも辞書はforループが回せます。
manzi = {
"name": "まんじ",
"age": 27,
"height": 177.5,
"weight": 65
}
for value in manzi.values():
print("valueが", value)
解説です。
- 辞書.values()で辞書のvalueがリスト風な反復可能オブジェクトになる
- それをforループで回してる
まとめ
辞書は最初のうちは難しいというか扱いにくくて「これ使うメリットあるん?」とか思ってしまいますが、プログラミングを進めていくとむしろ辞書を書かない日はないってぐらい使うようになります。