Python中访问含不同键名的JSON数值的最简方法及代码优化
简化JSON数据处理:访问数值与获取人口最多省份的优化方案
原始JSON数据
{"data":[ {"British Columbia":"BC","BC":"4.63"}, {"Alberta":"AB","AB":"4.15"}, {"Ontario":"ON","ON":"13.6"}, {"Manitoba":"MB","MB":"1.28"}, {"Saskatchewan":"SK","SK":"1.1"} ]}
访问数值变量的最简方式
因为每个数组元素的结构固定(省份全称→简称,简称→数值),可以直接通过提取对象的键值对快速获取数值:
- 直接取第二个属性值(数值始终是对象的第二个值):
// 以data数组第一个元素为例 const value = parseFloat(Object.values(jsonData.data[0])[1]); - 先取简称再取值(更明确对应关系):
const item = jsonData.data[0]; const abbr = Object.values(item)[0]; const value = parseFloat(item[abbr]);
简化获取人口最多省份的代码
可以用Array.reduce()替代手动循环比较,一步完成最大值筛选:
const jsonData = {"data":[ {"British Columbia":"BC","BC":"4.63"}, {"Alberta":"AB","AB":"4.15"}, {"Ontario":"ON","ON":"13.6"}, {"Manitoba":"MB","MB":"1.28"}, {"Saskatchewan":"SK","SK":"1.1"} ]}; // 筛选出数值最大的省份对象 const maxItem = jsonData.data.reduce((max, curr) => { const currVal = parseFloat(Object.values(curr)[1]); const maxVal = parseFloat(Object.values(max)[1]); return currVal > maxVal ? curr : max; }); // 提取省份名称和对应数值 const provinceName = Object.keys(maxItem)[0]; const maxValue = parseFloat(Object.values(maxItem)[1]); console.log(`人口最多的省份:${provinceName},数值:${maxValue}`);
这段代码通过reduce遍历数组,每次比较当前元素与已记录的最大值元素,最终直接得到数值最大的省份对象,省去了单独声明变量存储最大值和省份名的冗余步骤。
内容的提问来源于stack exchange,提问作者zihao sheng
相关产品推荐
相关产品推荐

