如何使用匿名函数对列表中的字典排序

在 Python 中,可以使用 sorted()函数配合 lambda匿名函数对字典列表进行排序。以下是几种常见场景的示例:

1. ​按字典的某个键升序排序

people = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Charlie', 'age': 35}
]

sorted_people = sorted(people, key=lambda x: x['age'])
# 结果:[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

2. ​按键降序排序(添加 reverse=True)​

sorted_people = sorted(people, key=lambda x: x['age'], reverse=True)
# 结果:[{'name': 'Charlie', 'age': 35}, {'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]

3. ​按多个键排序(返回元组)​

# 先按 age 升序,age 相同时按 name 升序
sorted_people = sorted(people, key=lambda x: (x['age'], x['name']))

# 先按 age 降序,age 相同时按 name 升序
sorted_people = sorted(people, key=lambda x: (-x['age'], x['name']))

4. ​处理缺失键(使用 get()设置默认值)​

# 若某些字典可能缺少 'age' 键
people = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob'},  # 无 age
    {'name': 'Charlie', 'age': 35}
]

sorted_people = sorted(people, key=lambda x: x.get('age', 0))  # 缺 age 时默认为 0
# 结果:Bob → Alice → Charlie

5. ​按嵌套字典的值排序

users = [
    {'name': 'Alice', 'info': {'score': 90}},
    {'name': 'Bob', 'info': {'score': 85}}
]

sorted_users = sorted(users, key=lambda x: x['info']['score'], reverse=True)
# 结果:Alice (90) → Bob (85)

6. ​复杂规则(如字符串长度排序)​

# 按 name 的字符串长度排序
sorted_people = sorted(people, key=lambda x: len(x['name']))
# Alice(5) < Bob(3) < Charlie(7) → Bob, Alice, Charlie

关键说明:

  • lambda函数​:定义排序依据,格式为 lambda x: expressionx是列表中的字典元素。
  • 返回类型​:key函数应返回可比较的值(如数字、字符串或元组)。
  • 多级排序​:返回元组 (key1, key2)实现优先级排序。
  • 稳定性​:sorted()是稳定排序,相同键元素的原始顺序会被保留。

通过调整 lambda中的表达式,可灵活实现各种排序需求!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值