Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)根據(jù)字段將記錄分組操作示例
本文實(shí)例講述了Python根據(jù)字段將記錄分組操作。分享給大家供大家參考,具體如下:
問題:想根據(jù)字典或者對(duì)象實(shí)例的某個(gè)特定的字典(比如日期)來分組迭代數(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)
# 如果只是簡單地根據(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)文章
使用Python進(jìn)行自動(dòng)化數(shù)據(jù)爬取與存儲(chǔ)
在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,從互聯(lián)網(wǎng)上獲取有價(jià)值的信息變得尤為重要,Python,作為一種功能強(qiáng)大且易于學(xué)習(xí)的編程語言,在數(shù)據(jù)爬取領(lǐng)域有著廣泛的應(yīng)用,本文將介紹如何使用Python進(jìn)行自動(dòng)化數(shù)據(jù)爬取與存儲(chǔ),需要的朋友可以參考下2025-02-02
詳解Python中4種超參自動(dòng)優(yōu)化算法的實(shí)現(xiàn)
要想模型效果好,每個(gè)算法工程師都應(yīng)該了解的流行超參數(shù)調(diào)優(yōu)技術(shù)。今天給大家總結(jié)超參自動(dòng)優(yōu)化方法:網(wǎng)格搜索、隨機(jī)搜索、貝葉斯優(yōu)化?和?Hyperband,感興趣的可以了解一下2022-05-05
Python中re正則匹配數(shù)據(jù)的實(shí)現(xiàn)
在Python中,可以使用re模塊來使用正則表達(dá)式,本文主要介紹了Python中re正則匹配數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04
pyCharm中python對(duì)象的自動(dòng)提示方式
這篇文章主要介紹了pyCharm中python對(duì)象的自動(dòng)提示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python requests.post()方法中data和json參數(shù)的使用方法
這篇文章主要介紹了Python requests.post()方法中data和json參數(shù)的使用方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-08-08
Python中集合類型(set)學(xué)習(xí)小結(jié)
這篇文章主要介紹了Python中集合類型(set)學(xué)習(xí)小結(jié),本文講解了set的初始化、運(yùn)算操作、基本方法等內(nèi)容,需要的朋友可以參考下2015-01-01
Pytorch中的torch.nn.Linear()方法用法解讀
這篇文章主要介紹了Pytorch中的torch.nn.Linear()方法用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python?sns.countplot()?繪畫條形圖詳情
這篇文章主要介紹了python?sns.countplot()繪畫條形圖詳情,sns.countplot()用于畫類別特征的頻數(shù)條形圖,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-06-06

