最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3多重排序處理多數(shù)據(jù)的示例詳解

 更新時間:2024年07月24日 11:15:55   作者:碼農(nóng)研究僧  
Python3的多重排序通常指的是對數(shù)據(jù)集合按照兩個或多個人數(shù)屬性進行排序的過程,這可以通過將多個排序關(guān)鍵字作為元組傳遞給內(nèi)置的sorted()函數(shù)或者是使用列表推導(dǎo)式結(jié)合lambda函數(shù)完成,本文詳細分析了python3多重排序處理多數(shù)據(jù),需要的朋友可以參考下

前言

主要講解多種方式的處理,以實際的Demo為主

方法優(yōu)點缺點
內(nèi)置 sorted() 函數(shù)與 lambda 表達式簡單易用,代碼簡潔
適合處理較小的數(shù)據(jù)集
對于大型數(shù)據(jù)集,性能可能不如專用的庫高效
operator 模塊提高可讀性,尤其是在復(fù)雜鍵提取的情況下仍然是基于 sorted() 的實現(xiàn),對于大型數(shù)據(jù)集,性能有限
pandas 庫高效處理大型數(shù)據(jù)集
提供豐富的數(shù)據(jù)操作功能
需要學(xué)習(xí)和掌握 pandas 庫的使用
numpy 庫高效處理數(shù)值數(shù)據(jù)
適用于大型數(shù)值數(shù)據(jù)集
對于非數(shù)值數(shù)據(jù)(如字符串),可能不如 pandas 方便

1. 內(nèi)置 sorted() 函數(shù)與 lambda 表達式

提供一個鍵函數(shù)來實現(xiàn)多重排序

鍵函數(shù)可以是一個 lambda 表達式,用來返回一個元組,元組中的每個元素按照優(yōu)先級進行排序

data = [
    {'name': 'Alice', 'age': 30, 'score': 88},
    {'name': 'Bob', 'age': 25, 'score': 92},
    {'name': 'Charlie', 'age': 30, 'score': 95},
    {'name': 'David', 'age': 25, 'score': 85}
]

# 按 age 和 score 排序,age 升序,score 降序
sorted_data = sorted(data, key=lambda x: (x['age'], -x['score']))

print(sorted_data)

截圖大致如下:

sorted() 函數(shù)不僅可以處理數(shù)字?jǐn)?shù)據(jù),還可以處理字符串和其他非數(shù)字?jǐn)?shù)據(jù)

通過 lambda 表達式,可以指定任意的排序邏輯

data = [
    {'name': 'Alice', 'department': 'HR', 'role': 'Manager'},
    {'name': 'Bob', 'department': 'Engineering', 'role': 'Developer'},
    {'name': 'Charlie', 'department': 'HR', 'role': 'Assistant'},
    {'name': 'David', 'department': 'Engineering', 'role': 'Manager'}
]

# 按 department 和 role 排序
sorted_data = sorted(data, key=lambda x: (x['department'], x['role']))

print(sorted_data)

數(shù)據(jù)先按 department 字段排序,再按 role 字段排序

2. operator 模塊

from operator import itemgetter

data = [
    {'name': 'Alice', 'age': 30, 'score': 88},
    {'name': 'Bob', 'age': 25, 'score': 92},
    {'name': 'Charlie', 'age': 30, 'score': 95},
    {'name': 'David', 'age': 25, 'score': 85}
]

# 按 age 和 score 排序,age 升序,score 降序
sorted_data = sorted(data, key=itemgetter('age', 'score'), reverse=True)
# 注意:要實現(xiàn) age 升序,score 降序,我們需要稍作調(diào)整
sorted_data = sorted(sorted_data, key=itemgetter('age'))

print(sorted_data)

operator 模塊中的 itemgetter 函數(shù)也適用于非數(shù)字?jǐn)?shù)據(jù)的排序

from operator import itemgetter

data = [
    {'name': 'Alice', 'department': 'HR', 'role': 'Manager'},
    {'name': 'Bob', 'department': 'Engineering', 'role': 'Developer'},
    {'name': 'Charlie', 'department': 'HR', 'role': 'Assistant'},
    {'name': 'David', 'department': 'Engineering', 'role': 'Manager'}
]

# 按 department 和 role 排序
sorted_data = sorted(data, key=itemgetter('department', 'role'))

print(sorted_data)

3. pandas 庫

大型數(shù)據(jù)集,使用 pandas 庫可以更高效地進行多重排序

import pandas as pd

data = [
    {'name': 'Alice', 'age': 30, 'score': 88},
    {'name': 'Bob', 'age': 25, 'score': 92},
    {'name': 'Charlie', 'age': 30, 'score': 95},
    {'name': 'David', 'age': 25, 'score': 85}
]

df = pd.DataFrame(data)

# 按 age 升序和 score 降序排序
sorted_df = df.sort_values(by=['age', 'score'], ascending=[True, False])

print(sorted_df)

同樣可處理非數(shù)字

import pandas as pd

data = [
    {'name': 'Alice', 'department': 'HR', 'role': 'Manager'},
    {'name': 'Bob', 'department': 'Engineering', 'role': 'Developer'},
    {'name': 'Charlie', 'department': 'HR', 'role': 'Assistant'},
    {'name': 'David', 'department': 'Engineering', 'role': 'Manager'}
]

df = pd.DataFrame(data)

# 按 department 和 role 排序
sorted_df = df.sort_values(by=['department', 'role'])

print(sorted_df)

4. numpy 庫

適用于數(shù)值數(shù)據(jù)

import numpy as np

data = np.array([
    ('Alice', 30, 88),
    ('Bob', 25, 92),
    ('Charlie', 30, 95),
    ('David', 25, 85)
], dtype=[('name', 'U10'), ('age', 'i4'), ('score', 'i4')])

# 按 age 升序和 score 降序排序
sorted_data = np.sort(data, order=['age', 'score'])[::-1]
sorted_data = np.sort(sorted_data, order=['age'])

print(sorted_data)

5. 自定義

某些情況下,可能需要更復(fù)雜的排序邏輯,可以定義自定義排序函數(shù)并將其傳遞給 sorted() 函數(shù)

data = [
    {'name': 'Alice', 'department': 'HR', 'role': 'Manager'},
    {'name': 'Bob', 'department': 'Engineering', 'role': 'Developer'},
    {'name': 'Charlie', 'department': 'HR', 'role': 'Assistant'},
    {'name': 'David', 'department': 'Engineering', 'role': 'Manager'}
]

# 自定義排序函數(shù)
def custom_sort(item):
    return (item['department'], item['role'])

# 按 department 和 role 排序
sorted_data = sorted(data, key=custom_sort)

print(sorted_data)

截圖如下:

到此這篇關(guān)于python3多重排序處理多數(shù)據(jù)的示例詳解的文章就介紹到這了,更多相關(guān)python3多重排序處理多數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python編寫的五個拿來就能用的炫酷表白代碼分享

    基于python編寫的五個拿來就能用的炫酷表白代碼分享

    七夕快到了,所以本文小編將給給大家介紹五種拿來就能用的炫酷表白代碼,無限彈窗表白,愛心發(fā)射,心動表白,玫瑰花等表白代碼,需要的小伙伴快來試試吧
    2023-08-08
  • 淺談使用Python變量時要避免的3個錯誤

    淺談使用Python變量時要避免的3個錯誤

    這篇文章主要介紹了淺談使用Python變量時要避免的3個錯誤,還是比較不錯的,涉及部分代碼分析,以及字典的創(chuàng)建等相關(guān)內(nèi)容,需要的朋友可以參考下。
    2017-10-10
  • matplotlib 生成的圖像中無法顯示中文字符的解決方法

    matplotlib 生成的圖像中無法顯示中文字符的解決方法

    這篇文章主要介紹了matplotlib 生成的圖像中無法顯示中文字符的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • JavaScript中常見的閉包陷阱及解決方案

    JavaScript中常見的閉包陷阱及解決方案

    閉包是 JavaScript 中一個強大而常用的特性,它允許函數(shù)訪問其外部作用域的變量,即使外部函數(shù)已經(jīng)執(zhí)行完畢, 然而,閉包的使用也可能引發(fā)一些常見的陷阱,本文將深入探討這些閉包陷阱,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2025-05-05
  • Python的Flask框架中web表單的教程

    Python的Flask框架中web表單的教程

    這篇文章主要介紹了Python的Flask框架中web表單的教程,表單是學(xué)習(xí)各個web框架中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • Python坐標(biāo)軸操作及設(shè)置代碼實例

    Python坐標(biāo)軸操作及設(shè)置代碼實例

    這篇文章主要介紹了Python坐標(biāo)軸操作及設(shè)置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Gradio構(gòu)建交互式Python應(yīng)用使用示例詳解

    Gradio構(gòu)建交互式Python應(yīng)用使用示例詳解

    這篇文章主要為大家介紹了Gradio構(gòu)建交互式Python應(yīng)用使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Pandas中字符串處理的核心方法與正則匹配實戰(zhàn)教學(xué)

    Pandas中字符串處理的核心方法與正則匹配實戰(zhàn)教學(xué)

    本文介紹了Pandas中字符串處理的核心方法,重點講解了str訪問器的常用操作技巧,包括字符串分割、拼接、替換與提取等,同時深入講解了正則表達式的基礎(chǔ)語法及其在Pandas中的應(yīng)用,希望幫助大家掌握高效處理文本數(shù)據(jù)的技能
    2026-05-05
  • python爬蟲開發(fā)之selenium模塊詳細使用方法與實例全解

    python爬蟲開發(fā)之selenium模塊詳細使用方法與實例全解

    這篇文章主要介紹了python爬蟲開發(fā)之selenium模塊詳細使用方法與實例全解,selenium模塊詳細在爬蟲開發(fā)中主要用來解決JavaScript渲染問題需要的朋友可以參考下
    2020-03-03
  • Python中Pytest測試框架的fixture使用詳解

    Python中Pytest測試框架的fixture使用詳解

    這篇文章主要介紹了Python中Pytest測試框架的fixture使用詳解,Pytest的fixture的目的是提供一個測試的基線,在此基線基礎(chǔ)上,可以更可靠的進行重復(fù)測試,需要的朋友可以參考下
    2023-08-08

最新評論

竹北市| 额尔古纳市| 元江| 新巴尔虎右旗| 慈利县| 古丈县| 铜梁县| 韩城市| 蚌埠市| 株洲市| 阳信县| 德保县| 宜章县| 延川县| 新兴县| 瑞金市| 阿荣旗| 亚东县| 萨嘎县| 民勤县| 外汇| 淮北市| 崇礼县| 金川县| 宁夏| 安泽县| 武鸣县| 罗甸县| 长葛市| 潜山县| 温泉县| 班玛县| 郸城县| 长治县| 达孜县| 谷城县| 丰城市| 凤山县| 海丰县| 石狮市| 高阳县|