You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:52:40