Pythonらしいデータ構造といえばdict(辞書型)です。
(本稿はPython3系を前提とします。)
dict型の基本
dict型は、「キー」から「要素」にアクセスできるのが特徴です。
| Object | |
|---|---|
| list, tuple | インデクス(i番目)から要素にアクセスできる |
| dict | キーから要素にアクセスできる |
dict型は波カッコ{}で括り、{キー:要素,...}のように書きます。キーから値を参照したいときは、リストと似た感じで変数名[キー]でアクセスします。
キーは文字列ないし整数がいいと思います。floatでもプログラムは走りますが数値計算の問題があるのでうまくないです。
要素は何でもありです。リストなども可。ここをどうするかが工夫のしどころです。
person = {
"name": "Alice",
"age": 30,
"city": "Tokyo"
}
print(person["name"]) # → Alice
dict型の操作
list型と似ていて、直接変更・追加ができます。
# 値の変更・追加 person["age"] = 31 # 変更 person["job"] = "Engineer" # 追加
存在しないキーにアクセスしようとすると、エラーになります。
person["sex"] # -> KeyError
いくつか回避する方法があります。
if "age" in person.keys(): age = person["age"] # -> 31
getメソッドは、キーが存在しなかったときにエラーを送出して停止するのではなく、Noneオブジェクトを返します。また、キーが存在しないときに返すデフォルト値を None 以外に設定しておくことができます。
age = person.get("age") # -> キーがあるので31 sex = person.get("sex") # -> キーがないので `None` birth = person.get("birth", "unknown") # -> デフォルト値に"unknown"