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

如何不使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:00:59