如何从JSON文件中拆分出车辆信息字典与罚单信息字典?
拆分车辆与罚单信息为独立字典
没问题,我来帮你完成这个字典拆分的需求。这里有两种常见的实现方式,你可以根据自己的使用场景选择:
方案一:用字典按车牌索引(快速检索)
这种方式适合你需要通过车牌快速查找对应车辆或罚单的场景,我们以车牌plate作为字典的键:
import json # 读取JSON文件数据 with open('jsonfile', 'r') as data: cars_dict = json.load(data) # 初始化两个空字典,分别存储车辆和罚单信息 vehicles = {} tickets = {} # 遍历每一辆车的数据 for car in cars_dict['cars']: plate = car['plate'] # 存入车辆信息:键为车牌,值为车型 vehicles[plate] = car['model'] # 处理当前车辆的所有罚单,关联车牌后存入字典 car_tickets = car['tickets'] # 给每个罚单添加车牌字段,方便后续关联 for ticket in car_tickets: ticket['plate'] = plate # 同一车牌的罚单合并到列表中 if plate in tickets: tickets[plate].extend(car_tickets) else: tickets[plate] = car_tickets
说明:
vehicles字典:键是车牌,值是对应车型。如果你的数据存在同一车牌对应多辆不同车型的情况,可以把值改成列表(比如vehicles.setdefault(plate, []).append(car['model']))来保留所有信息。tickets字典:键是车牌,值是该车牌对应的所有罚单列表,每个罚单都额外携带了plate字段,方便单独查看时溯源。
方案二:用列表存储(保持顺序/直观)
如果不需要快速检索,只是想把两类信息拆分成独立的列表集合,这种方式更直观:
import json with open('jsonfile', 'r') as data: cars_dict = json.load(data) # 初始化两个空列表 vehicles_list = [] tickets_list = [] for car in cars_dict['cars']: # 构建仅含车辆基本信息的字典(排除tickets字段) vehicle_info = {k: v for k, v in car.items() if k != 'tickets'} vehicles_list.append(vehicle_info) # 处理罚单:复制罚单并添加车牌字段后加入列表 for ticket in car['tickets']: ticket_with_plate = ticket.copy() ticket_with_plate['plate'] = car['plate'] tickets_list.append(ticket_with_plate)
说明:
vehicles_list是字典列表,每个元素只包含model和plate,完全剔除了罚单相关数据。tickets_list是字典列表,每个罚单条目都包含amount、type和对应的plate,可以独立使用。
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

