您的位置:首页技术文章
文章详情页

python - 假定有json数据多条记录,如何根据KEY的值返回一条记录?

【字号: 日期:2022-08-22 10:28:37浏览:10作者:猪猪

问题描述

比如说给一个json数据:

[ { 'Name': 'A1', 'No': '3111', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'B2', 'No': '2222', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'C3', 'No': '1444', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'C4', 'No': '0542', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }]

我想要No为'0542'的一条记录:

{ 'Name': 'C4', 'No': '0542', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00'}

如果用python3应该怎么实现?我网上搜索了类似代码比如 data = list(filter(lambda d: d[’No’] == '0542', jsondata))改来改去,总是报各种类型错误,抓狂了……所以请教下大家,应该怎么写,谢谢!

问题解答

回答1:

假設有 json string 如下:

s = '''[ { 'Name': 'A1', 'No': '3111', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'B2', 'No': '2222', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'C3', 'No': '1444', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }, { 'Name': 'C4', 'No': '0542', 'createDate': '9999/12/31 00:00:00', 'lastUpdDate': '9999/12/31 00:00:00' }]'''

代碼:

# code for python3import jsondef search(json_str, no): return [datum for datum in json.loads(s) if datum[’No’]==no]datum = search(s, ’0542’)print(datum)

結果:

[{’Name’: ’C4’, ’No’: ’0542’, ’createDate’: ’9999/12/31 00:00:00’, ’lastUpdDate’: ’9999/12/31 00:00:00’}]

我回答過的問題: Python-QA

标签: Python 编程