在python中實現數據庫下group by功能


在itertools包中,有groupby(iterable[,key])

在對data進行groupby前,先根據與groupby相同的key函數,對data進行排序sorted(data,key)。這是與數據庫group by不同的地方。

根據key函數對原迭代器下的各個元素進行分組,將擁有相同函數結果的元素分到一個新的迭代器下,每個新的迭代器以key函數返回結果為標簽。由於每次迭代結果會更新,所以最好將結果保存為列表。

例:

>>> from itertools import groupby
>>> def keyfunc(h):
  if h>180:
    return 'tall'
  elif h<160:
    return 'short'
  else:
    return 'middle'


>>> data=[190,180,182,160,155,170,167,178]
>>> data=sorted(data,key=keyfunc)
>>> for k,g in groupby(data,key=keyfunc):
  print(k)
  print(list(g))

結果:
middle
[180, 160, 170, 167, 178]
short
[155]
tall
[190, 182]

 

保存到列表的代碼:

>>> groups=[]
>>> uniquekeys=[]
>>> for k,g in groupby(data,key=keyfunc):
  groups=list(g)
  uniquekeys=k
  print(groups)
  print(uniquekeys)

相關參考:http://blog.sina.com.cn/s/blog_67331d610102vkj6.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM