问题标签 [defaultdict]
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.
python - collections.defaultdict 是线程安全的吗?
我根本没有在 Python 中使用过线程,并且作为一个完全陌生的人问这个问题。
我想知道是否defaultdict
是线程安全的。让我解释一下:
我有
默认情况下会为丢失的键创建一个列表。假设我有多个线程同时开始执行此操作:
最后,我应该以['value', 'value']
. 但是,如果defaultdict
不是线程安全的,如果线程1在检查之后和之前 让给线程2,就会导致交错,另一个线程可能会在其中创建列表并追加。if 'key' in dict
d['key'] = default_factory()
d['key']
'value'
然后当线程 1再次执行时,它会继续执行,d['key'] = default_factory()
这会破坏现有的列表和值,我们最终会进入['key']
.
我查看了 defaultdict 的 CPython 源代码。但是,我找不到任何锁或互斥锁。我猜它不是线程安全的,只要它被记录在案。
昨晚在 IRC 上有些人说 Python 上有 GIL,所以它在概念上是线程安全的。有人说线程不应该在 Python 中完成。我很困惑。想法?
python - 获取许多包含某个键的默认字典的值
我有几个defaultdict
看起来像这样:
我需要从每个共享相同索引的默认字典中获取字符串。像这样的东西:
但我必须为 30+ defaultdict 做这件事,那么如果不写上面那个可怕的循环,怎么能做到呢?
有没有办法使用相同的键获取 defaultdict 的所有值,然后轻松输出这些值?
它应该输出由对 all 共享相同键的值组成的元组组合dicts
,例如:
python - 将制表符分隔的文件读入默认字典 - Python
我有一个数据文件,其格式类似于id<tab>data
每行,其中每个数据值可能超过 1id
个,反之亦然,例如:
而且我想出了一个将数据文件读入 a 的函数defaultdict
,其中默认选项是使用id
as 键,有时使用数据 askey
也很有用。
所需的输出是defaultdict
键和值所在的位置id
,data
反之亦然。除了用上面的函数读取数据。
有没有更好的方法来获得相同的defaultdict
输出?数据文件中的行数范围为 1000 - 100,000,在某些情况下高达 100 万。
除了将数据文件读入 a 之外defaultdict
,还有其他更合适的原生数据结构吗?数据的使用只是为了让我可以使用或键查询dictionar
输出。id
data
python - 创建具有自然下标的 3 维 OrderedDict
我想要一个具有以下属性的字典结构:
- 双重嵌套(所以,在这么多单词中是 3 维的)
- 记住每个级别添加到其中的事物的顺序
所以,如果我像这样向它添加项目:
以下理解的结果:
将会:
我尝试使用 adefaultdict
来为新键强制执行此结构,因此我不必长时间键入它,如下所示:
但是defaultdict
不记得前两个级别的顺序。我不确定如何合并行为,因此显然前两个级别正在产生defaultdict
行为,因为我已声明d
如此。我怎样才能实现我想要的结构?
python - 在 Python 字典中对项目进行分组,然后在组中挑选出这些项目
我什至不确定我的措辞是否正确,但我很难理解这一点。我有一组组、描述、个人和数字的数据集。有些人可以在不同的群体中。有些可以有相同的描述。一个示例可能如下所示:
我试图完成的是为组/描述中的每个人获得一定的百分比。所以首先,我遍历数据并添加到一个数组中。然后我用它来创建一个默认字典。
我需要从这里做的是我感到困惑的地方。这是我正在使用的一个实际示例:
所以我得到了这些数字的总和,3.71。我的下一步是在该组中选择一个人,然后将他们的人数除以他们组的总数。以上面那个组中的 PERSON C 为例,我会得到 0.36/3.71 = 0.097。我不知道如何将它放入我的代码中,但它似乎一点也不难——但我只是没有看到它。在此之后我还有其他几个步骤,但我认为一旦我知道如何获得这个特定百分比,我就可以弄清楚其余的。
python - 不插入缺失值的 Python defaultdict
因此,defaultdict 文档提到,如果缺少某个项目,则default_factory
“将其返回的值插入到键的字典中,并返回”。大多数时候这很好,但在这种情况下我真正想要的是返回值但不插入到 defaultdict 中。
我想我可能可以继承 defaultdict 并覆盖......我猜__missing__
?没有把握。解决这个问题的最佳方法是什么?
提前致谢。
python - 使用元组键python在字典中嵌套循环元组值
我有一个默认字典,其中键是 4 元组(基因区域、物种、本体、长度)。
循环它很简单:
但是,我想以嵌套方式对其进行迭代,如下所示:
我该怎么做呢?除了首先收集价值之外没有其他方法吗?或者使用下面的 dum-dum 方式:
python - 将参数传递给由 defaultdict 创建的对象
我希望在构造新对象时有一个包含参数的默认字典。这可能吗,有更好的方法吗?
然后是我的obj:
python - defaultdict constant_factory 未按预期运行
我愿意使用更适合我的目的defaultdict
的ad hoc 。 default_factory
将default_factory
是[0,0]
。
我已经实现了一个constant_factory
功能:
然后当我尝试使用它时,我defaultdict
有一个意想不到的行为(至少是我没想到的行为)。
这是一个例子:
相反,我想得到:defaultdict(<method-wrapper 'next' of itertools.repeat object at 0x000000000355FC50>, {0: [1, 0], 1: [1, 0], 2: [1, 0], 3: [1, 0], 4: [1, 0], 5: [1, 0], 6: [1, 0], 7: [1, 0], 8: [1, 0], 9: [1, 0]})
看来,每次我愿意增加与 key 对应的列表的第一个槽的i
值时,它都会增加第一个槽的所有值。
由于我对使用 defaultdict 和方法包装器很陌生,任何人都可以解释我做错了什么,因为我相信 Python 做得很好吗?
data-structures - 具有未定义索引默认值的最快数据结构?
我正在尝试创建一个二维数组,当我访问索引时,将返回该值。但是,如果访问未定义的索引,它会调用回调并用该值填充索引,然后返回该值。
该数组也将具有负索引,但我可以通过使用 4 个数组(每个象限 0,0 左右一个)来克服这个问题。