python - 假定有json數據多條記錄,如何根據KEY的值返回一條記錄?
問題描述
比如說給一個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
