日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.3.2 Counter对象

發(fā)布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.3.2 Counter对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Counter類提供一個方便和快速統(tǒng)計的工具。

例子:

#python?3.4

import?collections

?

cnt?=?collections.Counter()

for?word?in?['red',?'blue',?'red',?'green',?'blue',?'blue']:

????cnt[word]?+=?1

print(cnt)

結(jié)果輸出如下:

Counter({'blue':?3,?'red':?2,?'green':?1})

?

從這個例子里可以看到,對單詞進行統(tǒng)計,不需要分別記住不同單詞進行增加,只調(diào)用一個簡單的動作,就可以完成了。

?

class?collections.Counter([iterable-or-mapping])?

Counter類是繼承字典類,并且基于HASH保存。因而它是不排序的容器,把元素當(dāng)作鍵,而把計數(shù)當(dāng)作鍵值。計數(shù)的數(shù)值是整數(shù),可以是0和負數(shù)。

創(chuàng)建一個Counter對象時,可以從迭代對象里創(chuàng)建,也可以從一個映射對象,或者Counter對象創(chuàng)建。

例子:

#python?3.4

import?collections

?

cnt?=?collections.Counter()

print(cnt)

cnt?=?collections.Counter('this?is?for?test')

print(cnt)

cnt?=?collections.Counter({'red':?4,?'blue':?2})

print(cnt)

cnt?=?collections.Counter(cats?=?4,?dogs?=?10)

print(cnt)

結(jié)果輸出如下:

Counter()

Counter({'t':?3,?'s':?3,?'?':?3,?'i':?2,?'r':?1,?'f':?1,?'h':?1,?'o':?1,?'e':?1})

Counter({'red':?4,?'blue':?2})

Counter({'dogs':?10,?'cats':?4})

?

在使用Counter對象時要注意兩點:1.?當(dāng)訪問一個不存在的元素時,它返回0值,而不是拋出異常。2.?設(shè)置一個元素為0值,并不是把這個元素刪除,而需要調(diào)用del來把元素刪除。

例子:

#python?3.4

import?collections

?

cnt?=?collections.Counter({'red':?4,?'blue':?2})

print(cnt)

print(cnt['white'])

cnt['red']?=?0

print(cnt)

print('開始刪除:')

del?cnt['red']

print(cnt)

結(jié)果輸出如下:

Counter({'red':?4,?'blue':?2})

0

Counter({'blue':?2,?'red':?0})

開始刪除:

Counter({'blue':?2})

?

Counter類除了支持字典類所有方法外,還增加下面三個方法:

elements()?

返回一個迭代器,按每個元素的統(tǒng)計的次數(shù)來返回多少次這個元素的值。元素返回的順序是隨機的,并且當(dāng)元素統(tǒng)計的值為0時不輸出此元素。

例子:

#python?3.4

import?collections

?

cnt?=?collections.Counter(a=4,?b=2,?c=0,?d=-2)

print(cnt)

print(list(cnt.elements()))

結(jié)果輸出如下:

Counter({'a':?4,?'b':?2,?'c':?0,?'d':?-2})

['a',?'a',?'a',?'a',?'b',?'b']

?

most_common([n])?

返回統(tǒng)計頻率最高的前n個元素。如果n沒有指定,就返回所有元素。返回的順序會是從大到小的順序。

例子:

#python?3.4

import?collections

?

cnt?=?collections.Counter(a=4,?b=2,?c=0,?d=-2)

print(cnt)

print(cnt.most_common(2))

結(jié)果輸出如下:

Counter({'a':?4,?'b':?2,?'c':?0,?'d':?-2})

[('a',?4),?('b',?2)]

?

subtract([iterable-or-mapping])?

Counter元素與另外一個迭代對象或映射對象進行相同元素相減的操作。

例子:

#python?3.4

import?collections

?

cnt1?=?collections.Counter(a=4,?b=2,?c=0,?d=-2)

cnt2?=?collections.Counter(a=1,?b=2,?c=3,?d=4)

?

print(cnt1)

print(cnt2)

cnt1.subtract(cnt2)

print(cnt1)

結(jié)果輸出如下:

Counter({'a':?4,?'b':?2,?'c':?0,?'d':?-2})

Counter({'d':?4,?'c':?3,?'b':?2,?'a':?1})

Counter({'a':?3,?'b':?0,?'c':?-3,?'d':?-6})

?

fromkeys(iterable)

這個方法在?Counter對象沒有實現(xiàn)。

?

update([iterable-or-mapping])?

從一個迭代器或者另一個映射對象里添加元素的統(tǒng)計值。

例子:

#python?3.4

import?collections

?

cnt1?=?collections.Counter(a=4,?b=2,?c=0,?d=-2)

cnt2?=?collections.Counter(a=1,?b=2,?c=3,?d=4)

?

print(cnt1)

print(cnt2)

cnt1.update(cnt2)

print(cnt1)

結(jié)果輸出如下:

Counter({'a':?4,?'b':?2,?'c':?0,?'d':?-2})

Counter({'d':?4,?'c':?3,?'b':?2,?'a':?1})

Counter({'a':?5,?'b':?4,?'c':?3,?'d':?2})

?

Counter對象進行一些公共的操作:

sum(c.values())?????????????????#?計算所有計數(shù)。

c.clear()???????????????????????#?復(fù)位所有計數(shù)。

list(c)?????????????????????????#?生成列表

set(c)??????????????????????????#?生成集合

dict(c)?????????????????????????#?生成普通字典

c.items()???????????????????????#?返回(elem,?cnt)對的列表

Counter(dict(list_of_pairs))????#?(elem,?cnt)的列表創(chuàng)建Counter

c.most_common()[:-n-1:-1]???????#?n個最常用元素返回

+c??????????????????????????????#?刪除0和負數(shù)計數(shù)

?

Counter對象的算術(shù)運算:

#python?3.4

import?collections

?

cnt1?=?collections.Counter(a=4,?b=2,?c=0,?d=-2)

cnt2?=?collections.Counter(a=1,?b=2,?c=3,?d=4)

?

print(cnt1)

print(cnt2)

print('cnt1?+?cnt2:',?cnt1?+?cnt2)

print('cnt1?-?cnt2:',?cnt1?-?cnt2)

print('cnt1?&?cnt2:',?cnt1?&?cnt2)

print('cnt1?|?cnt2:',?cnt1?|?cnt2)

print('+cnt1:',?+cnt1)

print('-cnt1:',?-cnt1)

結(jié)果輸出如下:

Counter({'a':?4,?'b':?2,?'c':?0,?'d':?-2})

Counter({'d':?4,?'c':?3,?'b':?2,?'a':?1})

cnt1?+?cnt2:?Counter({'a':?5,?'b':?4,?'c':?3,?'d':?2})

cnt1?-?cnt2:?Counter({'a':?3})

cnt1?&?cnt2:?Counter({'b':?2,?'a':?1})

cnt1?|?cnt2:?Counter({'d':?4,?'a':?4,?'c':?3,?'b':?2})

+cnt1:?Counter({'a':?4,?'b':?2})

-cnt1:?Counter({'d':?2})



蔡軍生 QQ;9073204 ?深圳

總結(jié)

以上是生活随笔為你收集整理的5.3.2 Counter对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。