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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:05