Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例
本文實例講述了Python根據(jù)字段將記錄分組操作。分享給大家供大家參考,具體如下:
問題:想根據(jù)字典或者對象實例的某個特定的字典(比如日期)來分組迭代數(shù)據(jù)
解決方案:itertools.groupby()
函數(shù)在對數(shù)據(jù)進(jìn)行分組時特別有用(前提是先以目標(biāo)字典進(jìn)行排序)
rows = [ {'address': '5412 N CLARK', 'date': '07/01/2012'}, {'address': '5148 N CLARK', 'date': '07/04/2012'}, {'address': '5800 E 58TH', 'date': '07/02/2012'}, {'address': '2122 N CLARK', 'date': '07/03/2012'}, {'address': '5645 N RAVENSWOOD', 'date': '07/02/2012'}, {'address': '1060 W ADDISON', 'date': '07/02/2012'}, {'address': '4801 N BROADWAY', 'date': '07/01/2012'}, {'address': '1039 W GRANVILLE', 'date': '07/04/2012'}, ] from operator import itemgetter from itertools import groupby rows.sort(key=itemgetter('date')) #首先以date字段進(jìn)行排序 for date, items in groupby(rows, key=itemgetter('date')): #再以date進(jìn)行分組 print(date) for i in items: print(' ', i) # 如果只是簡單地根據(jù)日期將數(shù)據(jù)分組到一起,放進(jìn)一個大的數(shù)據(jù)結(jié)構(gòu)中以允許進(jìn)行隨機訪問,那么可以利用defaultdict構(gòu)建一個一鍵多值的字典會更好 #Example of building a multidict from collections import defaultdict rows_by_date = defaultdict(list) #創(chuàng)建一個一鍵多值的字典, for row in rows: rows_by_date[row['date']].append(row) for r in rows_by_date['07/01/2012']: print(r)
運行結(jié)果:
07/01/2012 {'address': '5412 N CLARK', 'date': '07/01/2012'} {'address': '4801 N BROADWAY', 'date': '07/01/2012'} 07/02/2012 {'address': '5800 E 58TH', 'date': '07/02/2012'} {'address': '5645 N RAVENSWOOD', 'date': '07/02/2012'} {'address': '1060 W ADDISON', 'date': '07/02/2012'} 07/03/2012 {'address': '2122 N CLARK', 'date': '07/03/2012'} 07/04/2012 {'address': '5148 N CLARK', 'date': '07/04/2012'} {'address': '1039 W GRANVILLE', 'date': '07/04/2012'} {'address': '5412 N CLARK', 'date': '07/01/2012'} {'address': '4801 N BROADWAY', 'date': '07/01/2012'}
(代碼摘自《Python Cookbook》)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨變量的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項且保持元素間順序不變的方法
- python實現(xiàn)獲取序列中最小的幾個元素
- 利用Python找出序列中出現(xiàn)最多的元素示例代碼
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實現(xiàn)對不原生支持比較操作的對象排序算法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實現(xiàn)查找兩個字典相同點的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)字典相關(guān)計算問題示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實現(xiàn)優(yōu)先級隊列的方法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找到最大或最小的N個元素實現(xiàn)方法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)保存最后N個元素的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)篩選及提取序列中元素的方法
相關(guān)文章
Pandas庫中isnull函數(shù)的實現(xiàn)
isnull()是Pandas庫中DataFrame和Series對象的一個函數(shù),用于檢測數(shù)據(jù)中的缺失值,本文主要介紹了Pandas庫中isnull函數(shù)的實現(xiàn),具有一定參考價值,感興趣的可以了解一下2024-07-07python thrift 實現(xiàn) 單端口多服務(wù)的過程
這篇文章主要介紹了python thrift 實現(xiàn) 單端口多服務(wù)的過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06selenium學(xué)習(xí)教程之定位以及切換frame(iframe)
這篇文章主要給大家介紹了關(guān)于selenium學(xué)習(xí)教程之定位以及切換frame(iframe)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01利用Python實現(xiàn)Excel的文件間的數(shù)據(jù)匹配功能
這篇文章主要介紹了利用Python實現(xiàn)Excel的文件間的數(shù)據(jù)匹配,本文通過一個函數(shù)實現(xiàn)此功能,通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06linux系統(tǒng)使用python監(jiān)測網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出
這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出信息,大家參考使用吧2014-01-01