有一系列字典或例項,並且希望根據特定欄位的值(例如日期)對分組(group)的資料進行迭代。
下面有乙個子項為字典的序列(list),假如要根據日期(date)進行分組迭代:
rows = [,,
,,,,
,,
]from operator import itemgetter
from itertools import groupby
# sort by the desired field first
rows.sort(key=itemgetter('date'))
# iterate in groups
for date, items in groupby(rows, key=itemgetter('date')):
print(date)
for i in items:
print(' ', i)
07/01/2012
07/02/2012
07/03/2012
07/04/2012
在根據指定項分組之前,我們需要針對該項進行排序。排序後,相同指定項的為一組。
若只想將相同域的項合併到乙個大的資料結構中,如list。可以使用之前博文中提到的defaultdict()。如下**所示:
from collections import defaultdict
rows_by_date = defaultdict(list)
for row in rows:
>>> for r in rows_by_date['07/01/2012']:
print(r)
......
對於這個示例,不需要使用sort方法進行排序,defaultdict物件會根據其鍵進行歸類處理。 取分組中的特定記錄
表test有三列 a,b,c 100萬條記錄。a,b 上有唯一索引,現在要查詢對於每乙個a,b的值最大的那條記錄。有好幾種方法。1.select from select from test order by d desc as t group by a 速度最快的,但只有mysql可以用。2.sel...
python 高階教程 根據欄位將記錄分組
0.摘要 根據資料中某一元素對資料進行分類是常會遇到的問題,本文通過介紹itertool.groupby 函式,根據字典中某乙個值把資料進行分類。1.itertool.groupby 函式 rows from itertools import groupby rows.sort key lambda...
Mysql按欄位分組取最大值記錄
在實際工作中,我們經常碰到這樣的工作情況,取出使用者訂單中給定使用者的最大單筆購買金額,此時,可以用到mysql的按字段分組取最大值,操作如下 表 user order 結構如下,我的操作是取出uid對應的最大的buy time 方法0 select uid,max buy time from us...