以前はJSONファイルからデータを解析することに成功していましたが、今は達成したい機能に問題があります。 JSONに名前、識別番号、誕生日のリストがあります。私が取得したいのはPython=ユーザーに名前を入力させ、識別番号と生年月日(存在する場合)を取得できるようにすることです。
これは私のJSONサンプルファイルです。
[
{
"id_number": "SA4784",
"name": "Mark",
"birthdate": null
},
{
"id_number": "V410Z8",
"name": "Vincent",
"birthdate": "15/02/1989"
},
{
"id_number": "CZ1094",
"name": "Paul",
"birthdate": "27/09/1994"
}
]
明確にするために、「V410Z8」と入力し、彼の名前と生年月日を取得します。
Pythonでいくつかのコードを記述しようとしましたが、「id_number」の検索に成功しましたが、「V410Z8」などの「id_number」の中にあるものは検索できません。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
database = "example.json"
data = json.loads(open(database).read())
id_number = data[0]["id_number"]
print id_number
ご支援ありがとうございます、みんな:)
辞書のリストを反復処理し、指定されたid_number
を持つ辞書を検索する必要があります。それが見つかったら、id_number
が一意であると仮定して、そのデータの残りを印刷して中断できます。
data = [
{
"id_number": "SA4784",
"name": "Mark",
"birthdate": None
},
{
"id_number": "V410Z8",
"name": "Vincent",
"birthdate": "15/02/1989"
},
{
"id_number": "CZ1094",
"name": "Paul",
"birthdate": "27/09/1994"
}
]
for i in data:
if i['id_number'] == 'V410Z8':
print(i['birthdate'])
print(i['name'])
break
データ構造を制御できる場合、より効率的な方法は、id_number
をキーとして使用することです(ここでも、id_number
が一意であると仮定します)。
data = { "SA4784" : {"name": "Mark", "birthdate": None},
"V410Z8" : { "name": "Vincent", "birthdate": "15/02/1989"},
"CZ1094" : {"name": "Paul", "birthdate": "27/09/1994"}
}
それからあなたがする必要があるのは直接それにアクセスすることを試みることです:
try:
print(data["V410Z8"]["name"])
except KeyError:
print("ID doesn't exist")
>> "Vincent"