Python中如何按name键对字典内列表元素排序(保留首元素)
按name键字母排序Clients数据的解决方案
实现思路
你的需求是保留data数组中第一个统计客户端数量的对象,将后续带有name键的客户端对象按name的字母顺序排序。核心步骤是拆分数据、单独排序目标对象、再重组数组。
完整代码示例
# 原始数据 Clients = { "data": [ {"nClients": 3}, {"name": "cTest1", "roll_no": 1, "branch": "c"}, {"name": "fTest3", "roll_no": 3, "branch": "it3"}, {"name": "aTest2", "roll_no": 2, "branch": "it2"} ] } # 拆分数据:提取第一个非客户端对象,剩余为待排序的客户端列表 first_item = Clients["data"][0] clients_to_sort = Clients["data"][1:] # 按name字段的字母升序排序 clients_to_sort.sort(key=lambda x: x["name"]) # 重组data数组 Clients["data"] = [first_item] + clients_to_sort # 可选:输出格式化后的JSON结果 import json print(json.dumps(Clients, indent=4))
代码说明
- 拆分数据:把
data数组中第一个无name键的元素单独提取,剩下的元素是需要排序的客户端对象集合。 - 排序逻辑:使用列表的
sort()方法,通过key参数指定排序依据为对象的name字段,lambda x: x["name"]会提取每个对象的name值作为排序键,默认按字母升序排列。 - 重组数组:将保留的第一个元素和排序后的客户端列表合并,赋值回
Clients["data"],得到目标结构。
运行上述代码后,输出的Clients数据就会和你期望的结果一致。
内容的提问来源于stack exchange,提问作者Sim81
相关产品推荐
相关产品推荐

