一、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進行降序排序。
原創文章,作者:UWTJC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371722.html