问题标签 [python-collections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4919 浏览

python - collections.Counter: most_common 包括相等的计数

collections.Counter中,该方法most_common(n)仅返回列表中 n 个最频繁的项目。我正是需要这个,但我也需要包括相同的数量。

我需要[('A', 3), ('B', 2), ('C', 2), ('D', 2)] ,因为在这种情况下它们的计数与 n=2 相同。我的真实数据是关于 DNA 代码的,可能非常大。我需要它有点效率。

0 投票
2 回答
16451 浏览

python - Python collections.Counter: most_common 复杂度

Python中对象most_common提供的函数的复杂度是多少?collections.Counter

更具体地说,是Counter在计数时保留某种排序列表,允许它比何时添加到计数器的(唯一)项目数most_common更快地执行操作?供您参考,我正在处理大量文本数据,试图找到第 n 个最常见的标记。O(n)n

我查看了CPython wiki 上的官方文档TimeComplexity 文章,但找不到答案。

0 投票
3 回答
957 浏览

python - 以 unicode 字符串为名称的 namedtuple

我无法将 unicode 字符串分配为命名元组的名称。这有效:

这不会:

我得到错误

为什么会这样?文档说,“Python 3 还支持在标识符中使用 Unicode 字符”,并且密钥是有效的 unicode?

0 投票
1 回答
1749 浏览

python - namedtuple 的第一个参数是做什么用的?

我们namedtuple这样使用:

我发现 的第一个论点namedtuple似乎没用,因为:

首先,我们不能使用它(例如创建实例):

其次,它似乎没有限制(例如,我们不必使其唯一):

我没有从手册或谷歌搜索中找到解释。这里有一个相关的问题,但它没有回答为什么namedtuple需要第一个参数以及如何使用它或何时需要。

0 投票
2 回答
1382 浏览

python - 如何使用特定的数据结构作为 defaultdict 的 default_factory?

我目前正在使用defaultdictofCounter来唯一地计算不可预测键的几个不可预测值:

这给了我预期的结果:

我现在需要扩展 the 中的值的结构,defaultdict并使用两个键使其成为 a dict:previousCounter和 an str

是否可以使用特定的数据结构(如上)作为default_factoryin defaultdict?预期的结果是,对于 中的每个不存在的键,defaultdict将创建一个使用上述结构初始化的新键和值。

0 投票
2 回答
48 浏览

python - 查找满足阈值关系的组合

给定 、 、 和 的值phithetan_1需要n_2找到满足以下条件的所有可能对 ( N_1, ):N_2

在 Python 中执行此操作的最有效方法是什么?显然,我可以使用两个for循环——迭代N_1N_2(从前两个标准)的所有可能值,并只保存满足最后一个标准的那些对——但这将是相当低效的。

0 投票
1 回答
3446 浏览

python - TypeError : update() 接受 1 到 2 个位置参数,但给出了 3 个。

Counter.update() 函数需要两个参数(数据及其键),我提供了两个参数,但它抱怨提供了三个参数。

0 投票
5 回答
407 浏览

python - 如何在“Web Scraping with Python: Collecting Data from the Modern Web”第 7 章数据规范化部分中获得相同的结果

Python版本: 2.7.10

我的代码:

我最近学习如何通过Python 进行 Web 抓取:从现代 Web 收集数据一书学习如何进行网页抓取,而在第 7 章数据规范化部分,我首先编写了与书中显示的代码相同的代码,并从终端收到错误:

因此,我通过创建一个新字典来更改代码,其中实体是ngrams. 但我得到了完全不同的结果:

在此处输入图像描述

问题:

  1. 如果我想得到书中显示的结果(按值和频率排序),我应该编写自己的行来计算每个 2 克的出现,还是书中的代码已经具有该功能(代码在书是python 3代码)?在 github 上预订示例代码
  2. 我输出的频率与作者的相差很大,例如出现了[u'Software', u'Foundation']37 次而不是 40 次。导致这种差异的原因是什么(可能是我的代码错误)?

图书截图:

图书截图1图书截图2

0 投票
1 回答
184 浏览

python - 在多处理/映射函数中返回计数器对象

我有一个 python 脚本正在运行,它在多个线程中启动相同的函数。这些函数创建并处理 2 个计数器(c1 和 c2)。来自分叉进程的所有 c1 计数器的结果应合并在一起。与所有 c2 计数器的结果相同,由不同的分叉返回。

我的(伪)代码如下所示:

按照上面的例子,我需要一个类似的结果: cP1 = Counter({'apple': 25, 'banana': 247, 'orange': 24}) cP2 = Counter({'red': 11, 'blue': 56,“绿色”:3})

所以我的问题是:我如何计算分叉进程的数据,以便聚合父进程中的每个计数器(所有 c1 和所有 c2)?

0 投票
1 回答
58 浏览

python - 给定一个数字列表,找到一个可以覆盖最多数字的固定范围

在 python 中,我们可以使用 counter 来查找列表中最常见的元素。有没有办法我们可以传入函数,以便我们可以反击落在一定范围内的元素。

假设我有 [123, 127, 99,75,86, 83,81],我想返回类似 {'12X':2, '8X':3, '99':1, '75':1 }

有任何想法吗?