欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中的分組函數(shù)groupby和itertools)

 更新時(shí)間:2018年07月11日 17:00:50   作者:愛做夢的魚  
這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

具體代碼如下所示:

from operator import itemgetter #itemgetter用來去dict中的key,省去了使用lambda函數(shù)
from itertools import groupby #itertool還包含有其他很多函數(shù),比如將多個(gè)list聯(lián)合起來。。
d1={'name':'zhangsan','age':20,'country':'China'}
d2={'name':'wangwu','age':19,'country':'USA'}
d3={'name':'lisi','age':22,'country':'JP'}
d4={'name':'zhaoliu','age':22,'country':'USA'}
d5={'name':'pengqi','age':22,'country':'USA'}
d6={'name':'lijiu','age':22,'country':'China'}
lst=[d1,d2,d3,d4,d5,d6]
#通過country進(jìn)行分組:
lst.sort(key=itemgetter('country')) #需要先排序,然后才能groupby。lst排序后自身被改變
lstg = groupby(lst,itemgetter('country')) 
#lstg = groupby(lst,key=lambda x:x['country']) 等同于使用itemgetter()
for key,group in lstg:
  for g in group: #group是一個(gè)迭代器,包含了所有的分組列表
    print key,g

返回:

China {'country': 'China', 'age': 20, 'name': 'zhangsan'}
China {'country': 'China', 'age': 22, 'name': 'lijiu'}
JP {'country': 'JP', 'age': 22, 'name': 'lisi'}
USA {'country': 'USA', 'age': 19, 'name': 'wangwu'}
USA {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}
USA {'country': 'USA', 'age': 22, 'name': 'pengqi'}
print [key for key,group in lstg] #返回:['China', 'JP', 'USA']
print [(key,list(group)) for key,group in lstg]
#返回的list中包含著三個(gè)元組:
[('China', [{'country': 'China', 'age': 20, 'name': 'zhangsan'}, {'country': 'China', 'age': 22, 'name': 'lijiu'}]), ('JP', [{'country': 'JP', 'age': 22, 'name': 'lisi'}]), ('USA', [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'age': 22, 'name': 'pengqi'}])]
print dict([(key,list(group)) for key,group in lstg])
#返回的是一個(gè)字典:
{'JP': [{'country': 'JP', 'age': 22, 'name': 'lisi'}], 'China': [{'country': 'China', 'age': 20, 'name': 'zhangsan'}, {'country': 'China', 'age': 22, 'name': 'lijiu'}], 'USA': [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'age': 22, 'name': 'pengqi'}]}
print dict([(key,len(list(group))) for key,group in lstg])
#返回每個(gè)分組的個(gè)數(shù):
{'JP': 1, 'China': 2, 'USA': 3}
#返回包含有2個(gè)以上元素的分組
print [key for key,group in groupby(sorted(lst,key=itemgetter('country')),itemgetter('country')) if len(list(group))>=2]
#返回:['China', 'USA']
lstg = groupby(sorted(lst,key=itemgetter('country')),key=itemgetter('country')) 
lstgall=[(key,list(group)) for key,group in lstg ]
print dict(filter(lambda x:len(x[1])>2,lstgall)) 
#過濾出分組后的元素個(gè)數(shù)大于2個(gè)的分組,返回:
{'USA': [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'age': 22, 'name': 'pengqi'}]}

自定義分組:

from itertools import groupby
lst=[2,8,11,25,43,6,9,29,51,66]
def gb(num):
  if num <= 10:
    return 'less'
  elif num >=30:
    return 'great'
  else:
    return 'middle'
print [(k,list(g))for k,g in groupby(sorted(lst),key=gb)]

返回:

[('less', [2, 6, 8, 9]), ('middle', [11, 25, 29]), ('great', [43, 51, 66])]

總結(jié)

以上所述是小編給大家介紹的Python中的分組函數(shù)groupby和itertools),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • python實(shí)現(xiàn)簡單日期工具類

    python實(shí)現(xiàn)簡單日期工具類

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單日期工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • PyTorch如何利用parameters()獲取模型參數(shù)

    PyTorch如何利用parameters()獲取模型參數(shù)

    這篇文章主要介紹了PyTorch如何利用parameters()獲取模型參數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python使用sftp實(shí)現(xiàn)傳文件夾和文件

    Python使用sftp實(shí)現(xiàn)傳文件夾和文件

    這篇文章主要為大家詳細(xì)介紹了Python使用sftp實(shí)現(xiàn)傳文件夾和文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python獲取當(dāng)前頁面內(nèi)所有鏈接的四種方法對比分析

    Python獲取當(dāng)前頁面內(nèi)所有鏈接的四種方法對比分析

    這篇文章主要介紹了Python獲取當(dāng)前頁面內(nèi)所有鏈接的方法,結(jié)合實(shí)例形式對比分析了Python常用的四種獲取頁面鏈接的方法,并附帶了iframe框架內(nèi)鏈接的獲取方法,需要的朋友可以參考下
    2017-08-08
  • Python使用scipy進(jìn)行曲線擬合的方法實(shí)例

    Python使用scipy進(jìn)行曲線擬合的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python使用scipy進(jìn)行曲線擬合的相關(guān)資料,Scipy優(yōu)化和擬合采用的是optimize模塊,該模塊提供了函數(shù)最小值(標(biāo)量或多維)、曲線擬合和尋找等式的根的有用算法,需要的朋友可以參考下
    2022-05-05
  • Python 面向?qū)ο蟛糠种R點(diǎn)小結(jié)

    Python 面向?qū)ο蟛糠种R點(diǎn)小結(jié)

    這篇文章主要介紹了Python 面向?qū)ο蟛糠种R點(diǎn),總結(jié)分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類、對象、實(shí)例等相關(guān)概念、原理與使用技巧,需要的朋友可以參考下
    2020-03-03
  • python3.6 +tkinter GUI編程 實(shí)現(xiàn)界面化的文本處理工具(推薦)

    python3.6 +tkinter GUI編程 實(shí)現(xiàn)界面化的文本處理工具(推薦)

    這篇文章主要介紹了python3.6 +tkinter GUI編程 實(shí)現(xiàn)界面化的文本處理工具(推薦)的相關(guān)資料,需要的朋友可以參考下
    2017-12-12
  • pandas中DataFrame字典互轉(zhuǎn)的實(shí)現(xiàn)

    pandas中DataFrame字典互轉(zhuǎn)的實(shí)現(xiàn)

    在數(shù)據(jù)處理和分析中,Pandas是一個(gè)非常強(qiáng)大的Python庫,本文主要介紹了pandas中DataFrame字典互轉(zhuǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)

    Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)

    這篇文章介紹了Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python實(shí)現(xiàn)視頻目標(biāo)檢測與軌跡跟蹤流程詳解

    Python實(shí)現(xiàn)視頻目標(biāo)檢測與軌跡跟蹤流程詳解

    通過閱讀相關(guān)文獻(xiàn)及測試,找到了一種基于多模板匹配的改進(jìn)方法,可以對遙感視頻衛(wèi)星中的移動目標(biāo)進(jìn)行探測,并繪制其軌跡。根據(jù)實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),可以比較有效的對運(yùn)動目標(biāo)進(jìn)行跟蹤
    2023-01-01

最新評論