如何定位JSON中valA最小值对应的name并实现数值递增?
找到JSON数组中valA最小值对应的人员并更新值
需求说明
现有file.json文件存储JSON数组,需要实现以下逻辑:
- 定位数组中
valA值最小的人员 - 获取该人员的
name字段 - 将该人员的
valA值递增1 - 输出格式如:
Number 2 belongs to personA.
完整Python实现代码
import json # 读取JSON文件内容 with open('file.json', 'r') as f: people_list = json.load(f) # 计算valA的最小值 min_vala = min(person['valA'] for person in people_list) # 找到第一个匹配最小值的人员(若有多个最小值,可按需调整逻辑) target_person = next(p for p in people_list if p['valA'] == min_vala) # 输出指定格式的结果 print(f"Number {min_vala} belongs to {target_person['name']}.") # 递增目标人员的valA值 target_person['valA'] += 1 # 将更新后的数据写回文件 with open('file.json', 'w') as f: json.dump(people_list, f, indent=4)
代码关键点说明
- 文件读写:用
json.load()把JSON文件转成Python列表,修改完成后用json.dump()写回,indent=4保证输出的JSON格式易读。 - 最小值匹配:先用
min()拿到所有valA的最小值,再通过生成器表达式找到第一个对应人员;如果存在多个valA同为最小值的情况,可改用列表推导式收集所有匹配项,再批量处理。
多最小值场景的扩展处理
如果需要处理多个valA同为最小值的人员,可修改代码如下:
# 收集所有valA为最小值的人员 target_people = [p for p in people_list if p['valA'] == min_vala] # 遍历处理所有匹配人员 for person in target_people: print(f"Number {min_vala} belongs to {person['name']}.") person['valA'] += 1
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

