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

如何对字典值进行排序?求按年龄排序字典的实现方法

按年龄排序字典的解决方案

嘿,这事儿不难!你手里的是一个包含多个用户字典的大字典,要按age字段排序的话,用Python的sorted()函数就搞定了,我给你一步步讲清楚:

首先先确认你的原始字典结构应该是这样的(我帮你规整了下):

d = {
    1: {'name':'ste', 'surname':'pnt', 'age':21},
    2: {'name':'test', 'surname':'black','age':24},
    3: {'name':'check', 'surname':'try', 'age':41}
}

方法1:只排序用户信息(不带原始键)

如果你只需要按年龄排序后的用户字典列表,直接对字典的值排序就行,指定排序依据为每个用户的age:

# 升序排序(从小到大)
sorted_users_asc = sorted(d.values(), key=lambda user: user['age'])

# 降序排序(从大到小),加个reverse=True就行
sorted_users_desc = sorted(d.values(), key=lambda user: user['age'], reverse=True)

要输出的话,直接遍历这个排序后的列表:

for user in sorted_users_asc:
    print(user)

方法2:保留原始键(1、2、3)一起排序

如果想连带着原始的键(比如1、2、3)一起排序,那就对字典的键值对排序,同样指定key为用户字典的age:

# 升序排序键值对
sorted_items_asc = sorted(d.items(), key=lambda item: item[1]['age'])

# 降序排序
sorted_items_desc = sorted(d.items(), key=lambda item: item[1]['age'], reverse=True)

然后用你原来的for循环方式输出就可以:

for k, v in sorted_items_asc:
    print(k, v)

小解释

这里的lambda是个匿名函数,用来告诉sorted()函数“按什么规则排序”:

  • 对于d.values()的排序,lambda user: user['age']就是说“拿每个用户字典里的age值来比大小”
  • 对于d.items()的排序,lambda item: item[1]['age']是说“拿每个键值对里的第二个元素(也就是用户字典)的age值来比大小”

举个升序输出的例子,你会得到:

1 {'name':'ste', 'surname':'pnt', 'age':21}
2 {'name':'test', 'surname':'black','age':24}
3 {'name':'check', 'surname':'try', 'age':41}

这样就完美按年龄排好啦!

内容的提问来源于stack exchange,提问作者S. Pnt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:35