当前位置: 首页 > 面试题库 >

Python:Collections.Counter与defaultdict(int)

长孙阳成
2023-03-14
问题内容

假设我有一些看起来像下面的数据。

Lucy = 1
Bob = 5
Jim = 40
Susan = 6
Lucy = 2
Bob = 30
Harold = 6

我想结合1)删除重复键,和2)添加这些重复键的值。那意味着我会得到键/值:

Lucy = 3
Bob = 35
Jim = 40
Susan = 6
Harold = 6

为此使用(从集合中)计数器或默认字典会更好吗?


问题答案:

双方Counterdefaultdict(int)可以工作在这里很好,但它们之间存在一些差异:

  • Counter支持您可以在多集合上执行的大多数操作。因此,如果要使用这些操作,请使用Counter。

  • Counter查询缺少的键时,不会将新键添加到字典中。因此,如果您的查询包含字典中可能不存在的键,则最好使用Counter

例:

>>> c = Counter()
>>> d = defaultdict(int)
>>> c[0], d[1]
(0, 0)
>>> c
Counter()
>>> d
defaultdict(<type 'int'>, {1: 0})

例:

  • Counter也有一种称为的方法most_common,可让您按项目数对项目进行排序。要获得相同的东西,defaultdict您必须使用sorted

例:

>>> c = Counter('aaaaaaaaabbbbbbbcc')
>>> c.most_common()
[('a', 9), ('b', 7), ('c', 2)]
>>> c.most_common(2)          #return 2 most common items and their counts
[('a', 9), ('b', 7)]
  • Counter 还允许您从Counter对象创建元素列表。

例:

>>> c = Counter({'a':5, 'b':3})
>>> list(c.elements())
['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b']

因此,根据要对结果dict进行的处理,可以在Counter和之间进行选择defaultdict(int)



 类似资料:
  • 问题内容: 有没有办法使defaultdict也成为defaultdict的默认值?(即无限级递归defaultdict?) 我希望能够做到: 因此,我可以做到x = defaultdict(defaultdict),但这仅是第二层: 有一些食谱可以做到这一点。但是可以仅使用常规的defaultdict参数来完成吗? 请注意,这是在问如何执行无限级递归defaultdict,因此它与Python不

  • 本文向大家介绍Python中的defaultdict与__missing__()使用介绍,包括了Python中的defaultdict与__missing__()使用介绍的使用技巧和注意事项,需要的朋友参考一下 前言 今天我们的主角是 defaultdict ,同时也会介绍一下模仿方法 __missing__() ,本文主要来源于网友博客,分享给有需要的人。下面话不多说了,来一起看看详细的介绍吧。

  • 问题内容: 在其他人的代码中,我阅读了以下两行: 由于defaultdict的参数是默认工厂,因此我认为第一行表示当我为不存在的键k调用x [k](例如类似v = x [k]的语句)时,键值对(k ,0)会自动添加到字典中,就像首先执行语句x [k] = 0一样。我对么? 那y呢?似乎默认工厂将创建一个默认值为0的defaultdict。但这具体意味着什么?我试图在Python shell中尝试使

  • 问题内容: 我有一个defaultdict看起来像这样: 问题是,我不能使用cPickle腌制它。我在这里找到的解决方案之一是使用模块级函数而不是lambda。我的问题是,什么是模块级功能?如何在cPickle中使用字典? 问题答案: 除了Martijn的解释之外: 模块级函数是在模块级定义的函数,这意味着它不是类的实例方法,它不嵌套在另一个函数中,并且它是带有名称的“真实”函数,而不是lambd

  • 本文向大家介绍Python中defaultdict与lambda表达式用法实例小结,包括了Python中defaultdict与lambda表达式用法实例小结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中defaultdict与lambda表达式用法。分享给大家供大家参考,具体如下: 从教程中看到defaultdict是一个类,在一台装有Python2.7.6的电脑上使用发

  • 问题内容: 我如何转换defaultdict 成为普通命令? 问题答案: 您可以简单地致电: 但请记住,defaultdict 是 一个dict: 只是稍有不同的行为,因为当您试图访问一个缺少关键-这通常会提高一个-在被称为改为: 这就是您在字典的数据端出现之前看到的内容。 因此,在不实际制作新对象的情况下恢复更多类似dict的行为的另一个技巧是重置: 但这在大多数情况下都不值得。