问题标签 [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 投票
1 回答
917 浏览

python - itertools 骰子掷骰子:双倍掷骰子两次

我正在尝试学习 Python 库itertools,我认为一个好的测试是模拟掷骰子。product使用库生成所有可能的滚动并计算可能的方式很容易collections。我正在尝试解决诸如大富翁之类的游戏中出现的问题:当双打时,您再次滚动,您的最终总数是两次滚动的总和。

下面是我解决问题的开始尝试:两个计数器,一个用于双打,另一个用于非双打。我不确定是否有将它们结合起来的好方法,或者这两个计数器是否是最好的方法。

我正在寻找一种巧妙的方法来解决(通过枚举)使用 itertools 和集合的双打掷骰子问题。

0 投票
1 回答
319 浏览

python - 测试 collections.Mapping 是否等于其他映射或 dict

我编写了一个自定义映射类,它继承自collections.Mapping. 有没有一种简单的方法来测试一个实例的数据是否等于另一个映射对象,例如dict

0 投票
1 回答
8071 浏览

python - Python 集合模块中的 defaultdict 真的比使用 setdefault 快吗?

我已经看到其他 Python 程序员将集合模块中的 defaultdict 用于以下用例:

我通常通过使用 setdefault 来解决这个问题:

事实上,文档确实声称使用 defaultdict 更快,但我在测试自己时看到了相反的情况:

我设置测试的方式有问题吗?

作为参考,我使用的是 Python 2.7.3 [GCC 4.2.1 (Apple Inc. build 5666)

0 投票
1 回答
3684 浏览

python - collections.defaultdict 是线程安全的吗?

我根本没有在 Python 中使用过线程,并且作为一个完全陌生的人问这个问题。

我想知道是否defaultdict是线程安全的。让我解释一下:

我有

默认情况下会为丢失的键创建一个列表。假设我有多个线程同时开始执行此操作:

最后,我应该以['value', 'value']. 但是,如果defaultdict不是线程安全的,如果线程1在检查之后和之前 让给线程2,就会导致交错,另一个线程可能会在其中创建列表并追加。if 'key' in dictd['key'] = default_factory()d['key']'value'

然后当线程 1再次执行时,它会继续执行,d['key'] = default_factory()这会破坏现有的列表和值,我们最终会进入['key'].

我查看了 defaultdict 的 CPython 源代码。但是,我找不到任何锁或互斥锁。我猜它不是线程安全的,只要它被记录在案。

昨晚在 IRC 上有些人说 Python 上有 GIL,所以它在概念上是线程安全的。有人说线程不应该在 Python 中完成。我很困惑。想法?

0 投票
2 回答
3633 浏览

python - 使 Counter.most_common 返回字典

我使用了文档中的示例:

我怎样才能使结果为:

假设我们要保留Counter().most_common()代码?

0 投票
1 回答
50 浏览

python - Python如何/何时垃圾收集包含所有自己类型集合的对象?

我正在研究一个 Python 类,其结构类似于此答案中的示例:https ://stackoverflow.com/a/1383744/576333 。该类本身使用字典跟踪所有创建的对象。

我的问题是当我创建一个删除/删除方法并想Repositoryall_repos字典中清除一个实例时,python 中会发生什么?这是我计划做这样的方法:

具有以下用法:

此时,a仍然存在,但不在Repository.all_repos. Python 什么时候会最终移除a

0 投票
2 回答
79 浏览

python - 为什么 OrderedDict 有这种行为

在 Python 2.7 中,我对 OrderedDict 有这种行为

为什么?

0 投票
1 回答
61 浏览

python - 为什么我要在递归方法上获取和添加行为?

我正在尝试使用 xmltodict 生成 XML。为此,我需要基于 OrderedDict 生成结构。我第一次执行“.xml()”方法时得到了预期的行为,但是当我第二次执行时,我第二次添加了子元素。

在 ipython 控制台中,这是结果。

0 投票
2 回答
1971 浏览

python - Python 计数器比较作为 Bag-type

我需要 Python 中的类似包/多集的数据类型。我了解 collections.Counter 经常用于此目的。但是比较运算符似乎不起作用:

这对我来说似乎是一个错误。我希望小于和大于运算符执行类似集合的子集和超集比较。但如果是这种情况,那么bag1 > bag2将是错误的,因为bag2包含一个额外的'a'. Counter 对象上似乎也没有子集/超集方法。所以我有两个问题:

  1. Counter 对象使用什么比较逻辑?
  2. 如何比较 Counter 对象的子集、超集、真子集和真超集?
0 投票
1 回答
49 浏览

javascript - django / python 集合问题

我有一些我无法理解的代码。我越看越困惑。

有两个日期值和一个语言代码传递到 js 函数中。然后有一个 django 集合(我认为!),它与 django 语言标签交互以分配正确的值。

我以为我已经正确设置了它,但是代码不起作用,我看不出它的原因,因为我的经验不足以看出我哪里出错了。

当我尝试调用names.month时出现错误(如最后一行所示),所以我认为我在name_map代码或lc和LANGUAGE_CODES的变量分配中出错。

传入的值是:

日期1:10/2000;

日期2:12/2004;

动态语言代码:de;

任何建议都会很棒。