- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python中collections.Counter()的具体使用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似.
Counter是一个容器对象,主要的作用是用来统计散列对象,可以使用三种方式来初始化 。
下面的代码说明了Counter类创建的方法:
1
2
3
4
|
>>> c
=
Counter()
# 创建一个空的Counter类
>>> c
=
Counter(
'gallahad'
)
# 从一个可iterable对象(list、tuple、dict、字符串等)创建
>>> c
=
Counter({
'a'
:
4
,
'b'
:
2
})
# 从一个字典对象创建
>>> c
=
Counter(a
=
4
, b
=
2
)
# 从一组键值对创建
|
当所访问的键不存在时,返回0,而不是KeyError;否则返回它的计数.
1
2
3
4
5
6
7
|
>>> c
=
Counter(
"abcdefgab"
)
>>> c[
"a"
]
>
2
>>> c[
"c"
]
>
1
>>> c[
"h"
]
>
0
|
可以使用一个iterable对象或者另一个Counter对象来更新键值.
计数器的更新包括增加和减少两种.
增加使用update()方法:
1
2
3
4
5
6
7
8
|
>>> c
=
Counter(
'which'
)
>>> c.update(
'witch'
)
# 使用另一个iterable对象更新
>>> c[
'h'
]
>
2
>>> d
=
Counter(
'watch'
)
>>> c.update(d)
# 使用另一个Counter对象更新
>>> c[
'h'
]
>
3
|
减少则使用subtract()方法:
1
2
3
4
5
6
7
8
|
>>> c
=
Counter(
'which'
)
>>> c.subtract(
'witch'
)
# 使用另一个iterable对象更新
>>> c[
'h'
]
>
1
>>> d
=
Counter(
'watch'
)
>>> c.subtract(d)
# 使用另一个Counter对象更新
>>> c[
'a'
]
>
-
1
|
当计数值为0时,并不意味着元素被删除,删除元素应当使用del.
1
2
3
4
5
6
7
8
9
|
>>> c
=
Counter(
"abcdcba"
)
>>> c
Counter({
'a'
:
2
,
'c'
:
2
,
'b'
:
2
,
'd'
:
1
})
>>> c[
"b"
]
=
0
>>> c
Counter({
'a'
:
2
,
'c'
:
2
,
'd'
:
1
,
'b'
:
0
})
>>>
del
c[
"a"
]
>>> c
Counter({
'c'
:
2
,
'b'
:
2
,
'd'
:
1
})
|
返回一个迭代器.
元素被重复了多少次,在该迭代器中就包含多少个该元素。元素排列无确定顺序,个数小于1的元素不被包含.
1
2
3
|
>>> c
=
Counter(a
=
4
, b
=
2
, c
=
0
, d
=
-
2
)
>>>
list
(c.elements())
[
'a'
,
'a'
,
'a'
,
'a'
,
'b'
,
'b'
]
|
返回一个TopN列表。如果n没有被指定,则返回所有元素。当多个元素计数值相同时,排列是无确定顺序的.
1
2
3
4
5
|
>>> c
=
Counter(
'abracadabra'
)
>>> c.most_common()
[(
'a'
,
5
), (
'r'
,
2
), (
'b'
,
2
), (
'c'
,
1
), (
'd'
,
1
)]
>>> c.most_common(
3
)
[(
'a'
,
5
), (
'r'
,
2
), (
'b'
,
2
)]
|
未实现的类方法.
1
2
3
4
5
6
|
>>> c
=
Counter(
"abcdcba"
)
>>> c
Counter({
'a'
:
2
,
'c'
:
2
,
'b'
:
2
,
'd'
:
1
})
>>> d
=
c.copy()
>>> d
Counter({
'a'
:
2
,
'c'
:
2
,
'b'
:
2
,
'd'
:
1
})
|
+、-、&、|操作也可以用于Counter。其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。需要注意的是,得到的Counter对象将删除小于1的元素.
1
2
3
4
5
6
7
8
9
10
11
|
>>> c
=
Counter(a
=
3
, b
=
1
)
>>> d
=
Counter(a
=
1
, b
=
2
)
>>> c
+
d
# c[x] + d[x]
Counter({
'a'
:
4
,
'b'
:
3
})
>>> c
-
d
# subtract(只保留正数计数的元素)
Counter({
'a'
:
2
})
>>> c & d
# 交集: min(c[x], d[x])
Counter({
'a'
:
1
,
'b'
:
1
})
>>> c | d
# 并集: max(c[x], d[x])
Counter({
'a'
:
3
,
'b'
:
2
})
|
下面是一些Counter类的常用操作,来源于Python官方文档.
1
2
3
4
5
6
7
8
9
|
sum
(c.values())
# 所有计数的总数
c.clear()
# 重置Counter对象,注意不是删除
list
(c)
# 将c中的键转为列表
set
(c)
# 将c中的键转为set
dict
(c)
# 将c中的键值对转为字典
c.items()
# 转为(elem, cnt)格式的列表
Counter(
dict
(list_of_pairs))
# 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:
-
n:
-
1
]
# 取出计数最少的n个元素
c
+
=
Counter()
# 移除0和负值
|
到此这篇关于Python中collections.Counter()的具体使用的文章就介绍到这了,更多相关Python collections.Counter()内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_46092061/article/details/118571118 。
最后此篇关于Python中collections.Counter()的具体使用的文章就讲到这里了,如果你想了解更多关于Python中collections.Counter()的具体使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
是否有带有索引的.collect?我想做这样的事情: def myList = [ [position: 0, name: 'Bob'], [position: 0, name: 'J
我创建了一个 Collection 类,它扩展了 ArrayList 以添加一些有用的方法。它看起来像这样: public class Collection extends ArrayList {
我知道如果我有元素,我想得到 List/Set/Map 我可以调用这个元素: Collections.singleton()/Collections.singletonList()/Collectio
我刚刚在我的 pom 文件中看到 Apache commons-collections 有两个不同的组 ID: commons-collections commons-collect
我们可以对所有 Collections 类型的对象(如 Set 和 List)使用 Collections.synchronizedCollection(Collection c),这就是为什么我们有
我有List>我想让它把上一个集合中的所有人复制到List收藏。 我是这样做的: var People = new List>{ new List{...},... };
我想做的是使用良好的旧循环非常简单。 假设我有一个包含 B 列表的对象 A。 public class A { public List myListOfB; } 在其他一些方法中,我有一个 As
在 Capgemini 的采访中,我被问到一个我无法回答的问题。所有集合类和接口(interface)共有的那些方法是什么? 最佳答案 所有 java 对象类(包括所有集合)都派生自名为 Object
我有一系列存储估计信息的数据库表。当设置某些边界时,我试图从所有数据库表中返回所有数据。 收藏 $estimateItems = new Collection(); $esti
为什么 Haskell 实现如此专注于链表? 例如,我知道 Data.Sequence 效率更高 大多数列表操作(cons 操作除外),并且被大量使用; 但是,从语法上讲,它“几乎不受支持”。 Has
我试图简单地将我在 PHP 中请求的内容返回到 JSON。我的问题是每个库存尚未完成。事实上,它是“渲染”,但“this.collection.models”尚未完成,因为请求尚未完成。 我应该如何解
本质上,作为Powershell脚本的一部分,我需要实现广度优先搜索。因此,我需要队列,并且认为System.Collections.Queue与其他任何队列一样好。但是,当我从队列中取出一个对象时,
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是 on-topic用于堆栈溢出。 已关闭10 年前。 Improve t
嗨,我不明白为什么这不起作用? Notifications.update({'userId':Meteor.userId(), 'notifyUserId':notifyFriendId}, {$se
假设我有一个闭包: def increment = {value, step -> value + step } 现在我想遍历我的整数集合的每个项目,用 5 递增,并将新元素保存到一个新集合中:
使用逐页 View 时,我的 plone 集合文件夹未显示所有项目。基本上我有 9 页包含元素,但第 6 - 8 页显示的内容完全相同。因此,并非所有项目都会显示,即使项目总数对应于应该在集合中的元素
private Map> map ,其中 ProgramCourse 是我的项目中的域类,上面的 map 是我运行项目时域类 Program 的字段以下异常即将到来。 Use of @OneToMan
三者的主要区别是什么?现在,我想分别使用字符串/字符串创建一个键/值对。这三个似乎都有我可以使用的选项。 编辑:我只想创建一个简单的哈希表 - 没什么特别复杂的。 最佳答案 通用集合几乎完全取代了基础
我正在为 NodeJs 使用 mongodb 驱动程序,其中有 3 个方法: 1) db.collection.insert 2) 数据库.collection.insertOne 3) db.col
我有一个集合,我正在尝试使用 Distinct 方法删除重复项。 public static Collection imagePlaylist imagePlaylist = imagePlaylis
我是一名优秀的程序员,十分优秀!