Python中字典列表按值转换格式化及按舱位分组排序实现求助
Python字典列表按舱位分组排序实现方案
原代码问题说明
- 原函数仅处理单个乘客数据,未实现分组聚合逻辑
- 错误引用了不存在的
aff字段,原数据中舱位对应的字段是class - 没有预留排序逻辑的实现位置
实现思路
- 先初始化舱位分组容器,按要求的输出顺序预设好舱位key:
business在前,economy在后 - 遍历所有乘客数据,将乘客全名加入其购买的所有对应舱位的名单列表
- 对每个舱位下的乘客名单按
firstname升序排序 - 按指定格式拼接输出结果
完整实现代码
def analyze(customers_data): # 初始化分组,按要求的舱位顺序预设key groups = {"business": [], "economy": []} # 遍历所有乘客做分组 for customer in customers_data: full_name = f"{customer['firstname']} {customer['lastname']}" # 乘客买了几个舱位就往几个分组里加 for cls in customer["class"]: if cls in groups: groups[cls].append(full_name) # 每个分组内按firstname升序排序(全名首段为firstname,直接排序即可匹配规则) for cls in groups: groups[cls].sort() # 按要求格式拼接输出内容 output = [] for cls, names in groups.items(): output.append(f"{cls}: {', '.join(names)}") return "\n".join(output) # 调用测试 data = [ { "firstname" : "David", "lastname" : "Brown", "class" : [ "economy" ] }, { "firstname" : "Alina", "lastname" : "Hoper", "class" : [ "economy", "business" ] }, { "firstname" : "Bill", "lastname" : "Flow", "class" : [ "business" ] }, { "firstname" : "James", "lastname" : "Frank", "class" : [ "economy" ] } ] print(analyze(data))
运行输出结果
business: Alina Hoper, Bill Flow economy: Alina Hoper, David Brown, James Frank
内容的提问来源于stack exchange,提问作者Val.Val
相关产品推荐
相关产品推荐

