Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例
本文實(shí)例講述了Python根據(jù)字段將記錄分組操作。分享給大家供大家參考,具體如下:
問題:想根據(jù)字典或者對(duì)象實(shí)例的某個(gè)特定的字典(比如日期)來(lái)分組迭代數(shù)據(jù)
解決方案:itertools.groupby()
函數(shù)在對(duì)數(shù)據(jù)進(jìn)行分組時(shí)特別有用(前提是先以目標(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) # 如果只是簡(jiǎn)單地根據(jù)日期將數(shù)據(jù)分組到一起,放進(jìn)一個(gè)大的數(shù)據(jù)結(jié)構(gòu)中以允許進(jìn)行隨機(jī)訪問,那么可以利用defaultdict構(gòu)建一個(gè)一鍵多值的字典會(huì)更好 #Example of building a multidict from collections import defaultdict rows_by_date = defaultdict(list) #創(chuàng)建一個(gè)一鍵多值的字典, for row in rows: rows_by_date[row['date']].append(row) for r in rows_by_date['07/01/2012']: print(r)
運(yùn)行結(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文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項(xiàng)且保持元素間順序不變的方法
- python實(shí)現(xiàn)獲取序列中最小的幾個(gè)元素
- 利用Python找出序列中出現(xiàn)最多的元素示例代碼
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)對(duì)不原生支持比較操作的對(duì)象排序算法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)查找兩個(gè)字典相同點(diǎn)的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)字典相關(guān)計(jì)算問題示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列的方法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找到最大或最小的N個(gè)元素實(shí)現(xiàn)方法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)保存最后N個(gè)元素的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)篩選及提取序列中元素的方法
相關(guān)文章
python3獲取視頻文件播放時(shí)長(zhǎng)的三種方法
這篇文章主要介紹了python3獲取視頻文件播放時(shí)長(zhǎng)的三種方法,VideoFileClip,CV2以及FFmpeg這三種方法,文章通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-04-04Pandas庫(kù)中isnull函數(shù)的實(shí)現(xiàn)
isnull()是Pandas庫(kù)中DataFrame和Series對(duì)象的一個(gè)函數(shù),用于檢測(cè)數(shù)據(jù)中的缺失值,本文主要介紹了Pandas庫(kù)中isnull函數(shù)的實(shí)現(xiàn),具有一定參考價(jià)值,感興趣的可以了解一下2024-07-07django從請(qǐng)求到響應(yīng)的過程深入講解
這篇文章主要給大家介紹了關(guān)于django從請(qǐng)求到響應(yīng)的過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08python thrift 實(shí)現(xiàn) 單端口多服務(wù)的過程
這篇文章主要介紹了python thrift 實(shí)現(xiàn) 單端口多服務(wù)的過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06selenium學(xué)習(xí)教程之定位以及切換frame(iframe)
這篇文章主要給大家介紹了關(guān)于selenium學(xué)習(xí)教程之定位以及切換frame(iframe)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配功能
這篇文章主要介紹了利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配,本文通過一個(gè)函數(shù)實(shí)現(xiàn)此功能,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06linux系統(tǒng)使用python監(jiān)測(cè)網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出
這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測(cè)網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出信息,大家參考使用吧2014-01-01