python字典列表如何排序

python字典列表如何排序

作者:Joshua Lee发布时间:2026-01-06阅读时长:0 分钟阅读次数:20

用户关注问题

Q
如何根据字典中特定键的值对列表进行排序?

在一个包含多个字典的列表中,怎样根据字典里的某个键对应的值,对列表进行升序或降序排序?

A

使用 sorted 函数和 lambda 表达式排序字典列表

可以使用 Python 内置的 sorted 函数,并结合 lambda 表达式指定排序的键名。例如,如果有一个字典列表 lst,要根据键 'age' 排序,可写:sorted(lst, key=lambda x: x['age']),这样返回的是根据 'age' 升序排列的新列表。若要降序排序,添加参数 reverse=True 即可。

Q
如何原地修改列表,使字典列表完成排序?

有没有方法直接对原列表进行排序,而不是返回一个新列表?这样做的好处是什么?

A

利用列表的 sort 方法实现原地排序

列表的 sort 方法可以在原地对列表进行排序,无需创建新的列表对象。使用时同样可以传入 key 参数指定排序依据。例如,lst.sort(key=lambda x: x['score']),这样列表 lst 会被直接修改为排序后的状态。原地排序节省内存,适合大量数据处理时使用。

Q
如何对字典列表按照多个键进行排序?

在实际应用中,可能需要先按一个键排序,再按另一个键排序,有没有简单的代码实现方法?

A

使用 key 参数传入一个返回多个键值的元组

sorted 和 sort 函数的 key 参数可以返回一个元组,这样会先按元组第一个元素排序,再按第二个元素排序。举例来说,lst.sort(key=lambda x: (x['last_name'], x['first_name'])),这样列表就会先按姓排序,如果姓相同,则按名排序,非常方便实用。