本文實例講述了Python根據字段將記錄分組操作。分享給大家供大家參考,具體如下:
問題:想根據字典或者對象實例的某個特定的字典(比如日期)來分組迭代數據
解決方案:itertools.groupby()函數在對數據進行分組時特別有用(前提是先以目標字典進行排序)
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 itemgetterfrom itertools import groupbyrows.sort(key=itemgetter('date')) #首先以date字段進行排序for date, items in groupby(rows, key=itemgetter('date')): #再以date進行分組 print(date) for i in items: print(' ', i)# 如果只是簡單地根據日期將數據分組到一起,放進一個大的數據結構中以允許進行隨機訪問,那么可以利用defaultdict構建一個一鍵多值的字典會更好#Example of building a multidictfrom collections import defaultdictrows_by_date = defaultdict(list) #創建一個一鍵多值的字典,for row in rows: rows_by_date[row['date']].append(row)for r in rows_by_date['07/01/2012']: print(r)運行結果:
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》)
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答