JSONの深さを見つける
JSONオブジェクトは、データの保存や通信で広く使われている人気のデータ形式です。シンプルで読みやすく、多くの言語で解析や生成が可能です。この形式は基本的に
key:value
ペア(辞書のようなもの)の無順序な集合です。key:value
ペアは次のような形を取ります:"key": value
"key"
とvalue
はどちらも有効なJSONデータ型であれば何でも構いません。これらのペアはカンマで区切られ、波括弧{ }
で囲まれてオブジェクトを形成します。値として別のJSONオブジェクトを持つこともでき、これによりJSONオブジェクトの深さが増します。あなたのタスクは、JSONオブジェクトを引数として受け取り、そのオブジェクトの最大の深さを返すPython関数
calculate_depth
を作成することです。JSONオブジェクトは文字列として与えられます。簡単のため、JSONオブジェクトは正しくフォーマットされており、すべてのキーは文字列であると仮定して構いません。しかし、値は文字列、数値、ブール値、null、または他のJSONオブジェクト(ネストされた辞書として表現)である可能性があります。
PythonでJSON文字列を辞書に変換する方法は?
Pythonでは、
json
モジュールを使ってJSONオブジェクトの文字列をPythonの辞書に変換できます:import json
json_string = '{"name": "John", "age": 30, "city": "New York"}'
# json.loads()を使って文字列を辞書に変換
dict_obj = json.loads(json_string)
print(dict_obj)
# 出力: {'name': 'John', 'age': 30, 'city': 'New York'}
この例では、
json.loads(json_string)
を使ってjson_string
をPythonの辞書に変換しています。loads
関数は「load string(文字列を読み込む)」の略です。この辞書は他の辞書と同様にPythonプログラムで使用できます。あなたの関数は1つの整数、すなわち入力されたJSONオブジェクトの最大の深さを返すべきです。深さはネストされたJSONオブジェクトの最大レベルとして定義されます。トップレベルのJSONオブジェクトは深さ1を持ち、他のJSONオブジェクト内のJSONオブジェクトは深さ2を持つ、というように進みます。
入力 | 出力 |
{ "name":"John", "age":30, "city":"New York"} | 1 |
{ "name":"John", "age":30, "city": { "name": "New York", "population": 8000000 }} | 2 |
{ "name":"John", "details": { "age":30, "city": { "name": "New York", "population": { "year2023": 8000000, "year2022": 7900000 }}}} | 4 |
注意: 深さは
key:value
ペアの数ではなく、ネストされたJSONオブジェクトの最大レベルによって定義されます。Constraints
Time limit: 1 seconds
Memory limit: 512 MB
Output limit: 1 MB