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
相关产品推荐
相关产品推荐

