Python實用黑科技 以某個字段進行分組

2022-08-10 14:06:13 字數 1353 閱讀 4146

需求:

當前有個字典例項,你想以某個字段比如」日期」對整個字典裡面的元素進行分組。

方法:

itertools.groupby()函式是專門用來幹這個活的。請看下面這個例子,這裡有乙個列表構成的字典,你想按照日期來對列表進行分組,可以這麼做:

in [42]: from operator import itemgetter

in [43]: from itertools import groupby

in [44]: rows = [

...: ,

...: ,

...: ,

...: ,

...: ,

...: ,

...: ,

...:

...: ]

in [45]: rows.sort(key=itemgetter('date'))

in [46]: for date, items in groupby(rows, key=itemgetter('date')):

...: print(date)

...: for i in items:

...: print(' ', i)

...:

07/01/2012

07/02/2012

07/03/2012

07/04/201212

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

35擴充套件:

實用groupby()函式前,必須對相應的要分組的字段進行排序,因為他只能對有序資料進行分組。如果你僅僅只是想針對日期進行分組並且允許隨機獲取,那可能更好的方法是實用defaultdict()先產生乙個多維字典,例如:

in [48]: from collections import defaultdict

in [49]: rows_by_date = defaultdict(list)

in [51]: for r in rows_by_date['07/01/2012']:

...: print(r)

...:

對於這個例子,並不需要先對記錄進行排序。因此如果不需要考慮記憶體,用這個方法比用groupby()要快得多。

————————————————

以某個字元開始 python的字串

python中字串是乙個重要的資料型別。字串是用引號括起來的0個或多個字元,當引號括起來的是0個字元,那就叫空字串。我們可以定義乙個變數,然後將乙個字串賦值給這個變數。字串是中的字元是有索引順序的,索引序號是從o開始,依次1 2 3 如果我們想取出字串中的某個字元,可以在變數跟乙個方括號內填上序號,...

python通過某個欄位將記錄分組

通過某個欄位將記錄分組 from operator import itemgetter from itertools import groupby rows operator模組提供的itemgetter函式用於獲取物件的哪些維的資料 rows.sort key itemgetter date fo...

判斷字元是否以某個字元開頭和結尾

def check str value 檢查你輸入的是否是字元型別 ifisinstance value,str 判斷字串以什麼結尾 if value.endswith sh return s 是以.sh結尾的字串 value 判斷字串以什麼開頭 elif value.startswith xi r...