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

Python读取嵌套JSON字典中所有number值及JSON格式选择咨询

问题解答

一、修改代码获取所有嵌套的number值

你原来的代码仅遍历了data['items']的键名(比如PYGXGE、sbe7oa这类标识),要获取每个子项里的number值,有两种实用写法:

写法1:遍历键名再取值

import json

f = open('sample.json')
data = json.load(f)
  
for key in data['items']:
    # 通过键名定位子字典,再提取number字段
    number = data['items'][key]['number']
    print(number)
f.close()

写法2:直接遍历键值对(更直观)

用字典的items()方法同时获取键和对应的值,代码可读性更强:

import json

with open('sample.json') as f:  # 用with语句自动管理文件关闭,更规范
    data = json.load(f)
  
for _, item in data['items'].items():
    print(item['number'])

提示:with语句无需手动调用f.close(),能避免遗漏关闭文件的问题,是Python处理文件的推荐写法。

二、两种JSON格式的适用场景对比

当前格式(items为字典结构)

{
  "items": {
    "PYGXGE": {"id": "a", "number": "1"},
    "sbe7oa": {"id": "b", "number": "2"}
  }
}
  • 优势:每个子项有唯一键标识,能快速通过键名定位单个项,查找效率高(O(1)时间复杂度)。
  • 适合场景:需要频繁根据唯一ID查找、更新某个子项的业务,比如后台存储带唯一标识的资源数据。

字典列表格式(items为数组结构)

{
  "items": [
    {"id": "a", "number": "1", "key": "PYGXGE"},
    {"id": "b", "number": "2", "key": "sbe7oa"}
  ]
}
  • 优势:天然保持子项的顺序,方便批量遍历、排序、动态增删元素,结构更贴合常规的列表展示需求。
  • 适合场景:需要按顺序处理所有子项、子项无唯一标识,或者需要动态调整元素数量的业务,比如前端表格列表展示数据。

没有绝对的“更合适”,完全取决于你的业务需求:侧重快速查找选当前格式,侧重顺序操作和批量处理选列表格式。

内容的提问来源于stack exchange,提问作者vdotup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:35:31