如何不使用Python内置函数对字典列表按Age值升序排序?
实现无内置函数的字典列表按Age升序排序
你可以用冒泡排序手动实现这个需求,核心逻辑是通过多次遍历列表,比较相邻元素的Age值并交换位置,逐步将最小的元素"冒泡"到列表前端。以下是对应代码:
# 原始字典列表 people = [{'Name': 'Alpha', 'Age': 14}, {'Name': 'Bravo', 'Age': 21}, {'Name': 'Charlie', 'Age': 12}] # 获取列表长度(这里仅用len获取长度,未使用排序相关内置函数) n = len(people) # 冒泡排序核心逻辑 for i in range(n): # 标记本轮是否发生交换,用于优化排序流程 swapped = False # 遍历未排序的元素区间 for j in range(0, n - i - 1): # 比较相邻两个字典的Age值 if people[j]['Age'] > people[j+1]['Age']: # 交换两个字典的位置 people[j], people[j+1] = people[j+1], people[j] swapped = True # 如果本轮无交换,说明列表已完全有序,提前终止循环 if not swapped: break # 输出排序后的结果 print(people)
代码说明
- 外层循环控制排序轮次,每一轮结束后,当前未排序部分的最大元素会被移到末尾;
- 内层循环负责相邻元素的比较与交换,
n - i - 1的取值是因为每轮结束后,末尾i个元素已经是有序状态,无需重复比较; swapped标记是优化手段:如果某一轮没有发生任何交换,说明整个列表已经有序,可以提前结束排序,减少不必要的遍历。
运行代码后,输出结果与你的期望一致:
[{'Name': 'Charlie', 'Age': 12}, {'Name': 'Alpha', 'Age': 14}, {'Name': 'Bravo', 'Age': 21}]
内容的提问来源于stack exchange,提问作者Mohit Aswani
相关产品推荐
相关产品推荐

