您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Python cookbook中如何根據字段將記錄分組的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
問題:想根據字典或者對象實例的某個特定的字典(比如日期)來分組迭代數據
解決方案: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 itemgetter from itertools import groupby rows.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 multidict from collections import defaultdict rows_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中如何根據字段將記錄分組”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。