python在json文件中查找指定数据_使用Python在JSON中查找值

本文介绍了如何在Python中处理JSON文件,通过用户输入的ID查找对应的名字和出生日期。示例代码展示了两种方法:遍历列表和使用字典结构直接访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I’ve previously succeeded in parsing data from a JSON file, but now I’m facing a problem with the function I want to achieve. I have a list of names, identification numbers and birthdate in a JSON. What I want to get in Python is to be able to let a user input a name and retrieve his identification number and the birthdate (if present).

This is my JSON example file:

[

{

"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"

}

]

To be clear, I want to input "V410Z8" and get his name and his birthdate.

I tried to write some code in Python but I only succeed in searching for “id_number” and not for what is inside “id_number” for example "V410Z8".

#!/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

Thank you for your support, guys :)

解决方案

You have to iterate over the list of dictionaries and search for the one with the given id_number. Once you find it you can print the rest of its data and break, assuming id_number is unique.

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

If you have control over the data structure, a more efficient way would be to use the id_number as a key (again, assuming id_number is unique):

data = { "SA4784" : {"name": "Mark", "birthdate": None},

"V410Z8" : { "name": "Vincent", "birthdate": "15/02/1989"},

"CZ1094" : {"name": "Paul", "birthdate": "27/09/1994"}

}

Then all you need to do is try to access it directly:

try:

print(data["V410Z8"]["name"])

except KeyError:

print("ID doesn't exist")

>> "Vincent"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值