一、List按照某个字段排序倒序
def sort_list_reverse(list_to_sort, field): """ 对List进行指定字段的逆序排序 :param list_to_sort: 要排序的List :param field: 排序的字段 :return: 排序后的List """ sorted_list = sorted(list_to_sort, key=lambda k: k[field], reverse=True) return sorted_list
以上代码使用Python自带的sorted函数,通过传入Lambda表达式指定排序的字段,同时通过设置reverse参数为True指定降序排序。
二、List根据某个字段排序
def sort_list(list_to_sort, field): """ 对List进行指定字段的升序排序 :param list_to_sort: 要排序的List :param field: 排序的字段 :return: 排序后的List """ sorted_list = sorted(list_to_sort, key=lambda k: k[field]) return sorted_list
以上代码与上面的例子类似,只是将reverse参数设置为False,即升序排序。
三、如何根据List中某个字段排序
我们通常可以使用Python自带的sorted函数进行排序,但是很多时候需要对List中的某个字段进行排序。此时,我们常常可以利用List中每个元素都是一个字典的特点,使用Lambda表达式指定排序的字段。
list_to_sort = [ {"name": "Tom", "age": 18}, {"name": "Bob", "age": 21}, {"name": "Jerry", "age": 16}, ] sorted_list = sorted(list_to_sort, key=lambda k: k["age"])
以上代码中,我们将每一个元素都表示为一个字典,然后使用Lambda表达式指定以“age”为排序字段,最终得到的就是根据“age”从小到大排序的List。
四、List按某个字段分组
有时候我们需要按照某个字段将List分组,可以利用Python自带的groupby函数来实现。
from itertools import groupby list_to_group = [ {"name": "Tom", "age": 18, "gender": "male"}, {"name": "Bob", "age": 21, "gender": "male"}, {"name": "Jerry", "age": 16, "gender": "female"}, {"name": "Lily", "age": 22, "gender": "female"}, ] sorted_list = sorted(list_to_group, key=lambda k: k["gender"]) grouped_list = {k: list(v) for k, v in groupby(sorted_list, lambda k: k["gender"])}
以上代码中,我们按照“gender”字段进行排序并分组,最终得到的是一个字典,其中键值为“male”和“female”,对应的值是按照“gender”进行排序后的子List。
五、List数组根据某个字段排序
有时我们需要对数组中的元素按照某个字段排序,可以利用NumPy库的argsort函数来实现。
import numpy as np list_to_sort = [ {"name": "Tom", "age": 18}, {"name": "Bob", "age": 21}, {"name": "Jerry", "age": 16}, ] sorted_array = np.argsort([x["age"] for x in list_to_sort]) sorted_list = [list_to_sort[i] for i in sorted_array]
以上代码使用argsort函数按照“age”字段进行排序,并返回排序后的索引值,最终得到的sorted_array为[2,0,1],即代表经过排序后的元素在原List中的索引值。最后我们可以根据这些索引值,将List中对应位置的元素排序后构成新的List。
六、根据List中某个字段的值排序
除了按照字段进行排序,有时候我们也需要根据特定的值进行排序。可以利用Python自带的sort函数配合Lambda表达式来实现。
list_to_sort = [ {"name": "Tom", "sex": "F"}, {"name": "Bob", "sex": "M"}, {"name": "Jerry", "sex": "M"}, {"name": "Lily", "sex": "F"}, ] sorted_list = sorted(list_to_sort, key=lambda k: ["F", "M"].index(k["sex"]))
以上代码中,我们使用Lambda表达式指定了排序的方法,先将“F”和“M”使用index方法获取对应的索引值,然后按照这些索引值进行排序。最终得到的是一个按照“sex”字段排好序的List。
七、List多字段排序sort
除了按照单个字段排序,我们还可以按照多个字段进行排序,可以利用Python自带的sort函数进行实现。
list_to_sort = [ {"name": "Tom", "age": 18, "score": 80}, {"name": "Bob", "age": 21, "score": 85}, {"name": "Jerry", "age": 16, "score": 70}, {"name": "Lily", "age": 22, "score": 95}, ] sorted_list = sorted(list_to_sort, key=lambda k: (k["age"], k["score"]))
以上代码中,我们使用Lambda表达式按照“age”字段和“score”字段进行排序,最终得到的是按照多个字段排好序的List。
八、List集合排序指定字段
有时候我们需要按照一个集合中元素的某个字段进行排序,可以利用Python自带的sorted函数和Lambda表达式来实现。
set_to_sort = { {"name": "Tom", "age": 18}, {"name": "Bob", "age": 21}, {"name": "Jerry", "age": 16}, } sorted_set = sorted(set_to_sort, key=lambda k: k["age"])
以上代码中,我们将集合中每一个元素都表示为一个字典,然后使用Lambda表达式指定以“age”为排序字段,最终得到的就是根据“age”从小到大排序的集合。
九、按某个字段降序排列SQL选取
在SQL语句中,我们可以使用ORDER BY子句来排列选取出来的结果集,可以使用DESC关键字来指定降序排序。例如:
SELECT name, age, score FROM students ORDER BY score DESC;
以上SQL语句会从students表中选取出name, age, score三个字段,并且按照score进行降序排序。