如何用Python剔除世界银行API返回JSON中的冗余字段?
解决方法:从世界银行API JSON数据中提取指定字段
嘿,这事儿处理起来挺简单的,我给你两种实用的Python实现方式,你可以根据自己的习惯选:
先看我们的输入示例
首先把你拿到的JSON片段整理成可测试的Python数据:
original_data = [ { 'adminregion': {'id': 'SAS', 'iso2code': '8S', 'value': 'South Asia'}, 'capitalCity': 'Kabul', 'id': 'AFG', 'incomeLevel': {'id': 'LIC', 'iso2code': 'XM', 'value': 'Low income'}, 'iso2Code': 'AF', 'latitude': '34.5228', 'lendingType': {'id': 'IDX', 'iso2code': 'XI', 'value': 'IDA'}, 'longitude': '69.1761', 'name': 'Afghanistan', 'region': {'id': 'SAS', 'iso2code': '8S', 'value': 'South Asia'} }, # 可添加更多条目测试 ]
方法一:列表推导式(简洁高效)
如果数据量不大,想要一行搞定,列表推导式是最优选择,代码清爽还高效:
processed_data = [ { 'id': item['id'], 'incomeLevel': item['incomeLevel']['value'], 'name': item['name'], 'region': item['region']['value'] } for item in original_data ]
简单说就是:遍历原始数据里的每一个国家条目,为每个条目构建只包含你需要字段的新字典,直接把incomeLevel和region嵌套的value值取出来。
方法二:循环遍历(可读性更强+容错性好)
要是你觉得列表推导式太紧凑,或者担心某些条目可能缺失字段导致报错,那用普通循环加安全取值会更稳妥:
processed_data = [] for item in original_data: # 构造单条处理后的字典,用get方法设置默认值避免报错 cleaned_item = { 'id': item.get('id', '未知ID'), 'incomeLevel': item.get('incomeLevel', {}).get('value', '未知收入水平'), 'name': item.get('name', '未知国家'), 'region': item.get('region', {}).get('value', '未知区域') } processed_data.append(cleaned_item)
这里用dict.get()代替直接用[]取值,就算某个条目缺了字段,代码也不会崩溃,而是返回你设置的默认值,容错性拉满。
最终效果
不管用哪种方法,处理后的数据都会变成你想要的格式:
# 输出示例 [ { 'id': 'AFG', 'incomeLevel': 'Low income', 'name': 'Afghanistan', 'region': 'South Asia' } ]
内容的提问来源于stack exchange,提问作者seki
相关产品推荐
相关产品推荐

