如何在Python中按字典值对包含字典的列表排序?
按字典中指定键的值对列表排序
要对包含多个字典的列表按某个字典键的值排序,Python提供了两种简单的实现方式:
方法一:使用sorted()函数(返回新列表)
sorted()函数会生成一个排序后的新列表,原列表保持不变,适合需要保留原数据的场景:
lst = [ {"a": 3, "b": 2}, {"a": 1, "b": 4}, {"a": 2, "b": 3} ] # 按键"a"的值升序排序 sorted_lst = sorted(lst, key=lambda x: x["a"]) print(sorted_lst) # 输出:[{"a": 1, "b": 4}, {"a": 2, "b": 3}, {"a": 3, "b": 2}]
方法二:使用列表的.sort()方法(修改原列表)
.sort()方法会直接在原列表上进行排序,不需要额外内存存储新列表,适合对内存占用有要求的场景:
lst = [ {"a": 3, "b": 2}, {"a": 1, "b": 4}, {"a": 2, "b": 3} ] # 直接在原列表上按键"a"的值升序排序 lst.sort(key=lambda x: x["a"]) print(lst) # 输出:[{"a": 1, "b": 4}, {"a": 2, "b": 3}, {"a": 3, "b": 2}]
降序排序
如果需要按键值降序排列,只需添加reverse=True参数即可:
# 使用sorted()降序 sorted_lst_desc = sorted(lst, key=lambda x: x["a"], reverse=True) # 使用.sort()降序 lst.sort(key=lambda x: x["a"], reverse=True)
内容的提问来源于stack exchange,提问作者Peyman S87
相关产品推荐
相关产品推荐

