问题标签 [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.

0 投票
2 回答
1258 浏览

python - 从 defaultdict 中提取信息

我有一个包含数字平均位置计算的 defaultdict(欧拉问题)

我正在尝试将此信息转换为简单的字符串,而不是从 0 到 2 手动执行。我正在寻找的最终结果类似于

我不知道在不使用许多 if-else 和 for 循环的情况下提取它们的任何好方法。

在python中有什么简单而好的方法吗?

0 投票
1 回答
14222 浏览

python - 创建和查找每个值具有多个键的 2D 字典

我想我想制作一个每个值有多个键的二维字典。

我知道如何使用以下方法制作 2D 字典defaultdict

而且我知道使用常规字典可以使用多个键,例如:

但我想做一些类似 tuple-of-keys 的查找:

在字典的第一维中,每个值我需要约 25 个键。有没有办法做到这一点defaultdict

即使有办法用 dicts 来做,这是制作简单多维查找表的合理方法吗?

0 投票
3 回答
6311 浏览

python - 将 `defaultdict` 公开为常规 `dict`

我正在使用defaultdict(set)在非常大的数据结构中填充内部映射。填充后,整个结构(包括映射)将暴露给客户端代码。那时,我不希望任何人修改映射。

没有人故意这样做。但有时,客户端代码可能会意外引用不存在的元素。那时,一个普通的字典会产生KeyError,但由于映射是defaultdict,它只是在该键处创建一个新元素(一个空集)。这很难捕捉,因为一切都在悄无声息地发生。但我需要确保不会发生这种情况(语义实际上不会中断,但映射会增长到巨大的大小)。

我该怎么办?我可以看到这些选择:

  1. 在当前和未来的客户端代码中查找对映射执行字典查找的所有实例,并将其转换为mapping.get(k, {})。这太可怕了。

  2. defaultdict在数据结构完全初始化后“冻结” ,将其转换为dict. (我知道它并没有真正冻结,但我相信客户端代码实际上不会编写mapping[k] = v。)不优雅,并且性能受到很大影响。

  3. 包装defaultdict成一个dict界面。有什么优雅的方法来做到这一点?恐怕性能损失可能很大(这种查找在紧密循环中大量使用)。

  4. 子类defaultdict化并添加一个“关闭”所有defaultdict功能的方法,让它的行为就好像它是一个常规的dict. 它是上述 3 的变体,但我不确定它是否更快。如果不依赖实现细节,我不知道它是否可行。

  5. 在数据结构中使用正则dict,重写那里的所有代码以首先检查元素是否在字典中,如果不在则添加。不好。

0 投票
1 回答
88 浏览

python - 优化分层字典中的python键搜索

我正在尝试优化我的代码,因为当我尝试加载庞大的字典时,它变得非常慢。我认为这是因为它在字典中搜索一个键。我一直在阅读有关 python的内容defaultdict,我认为这可能是一个很好的改进,但我没有在这里实现它。如您所见,这是一个分层字典结构。任何提示将不胜感激。

基因和蛋白质的定义是:

0 投票
2 回答
387 浏览

python - Slow defaultdict and mongoDB import from tab-delimited file. Can anyone spot my bottleneck?

So I'm trying to import about 80 million page views from a log file. I'm trying to put them in the database as sessions, i.e. groups of page views separated with 20 minutes in between.

So eventually, in my user database I would like each user to have a list of dictionary objects like so:

Should be fairly simple. So I wrote this script:

I'm getting about 0.002 seconds per line = 44 hours for an 80 million page view file.

This is with a 2TB 7200rpm seagate HDD, 32 GB of RAM and 3.4Ghz dualcore i3 processor.

Does this time sound reasonable or am I making some horrendous mistakes?


EDIT: We're looking at about 90,000+ users, i.e. keys in the defaultdict


EDIT2: Here's the cProfile output on a much smaller 106mb file. I commented out the actual mongoDB saves for testing purposes: http://pastebin.com/4XGtvYWD


EDIT3: Here's a barchart analysis of the cProfile: http://i.imgur.com/K6pu6xx.png

0 投票
1 回答
2827 浏览

python-2.7 - 从 defaultdict 对象访问值

我有一个默认字典,每个键有多个值。我想计算每个键的平均值。我不知道如何访问与每个键关联的值。任何人都可以帮忙吗?

0 投票
1 回答
65 浏览

python - 将dict内容分配给自变量

如何将 defaultdict 拆分为独立的列表,其中键作为列表名称,值作为列表元素。

例如:

如何得到:

0 投票
2 回答
1846 浏览

python - 如何根据defaultdict中的键累积值

如果我有一个 defaultdict(list)

......我如何将其转换为类似的 defaultdict(list) 其值是具有相同键的第一个 dict 的值的累积,但从不大于 1

到目前为止我只有以下代码,它不太正确:-(

0 投票
3 回答
254 浏览

python - 通过相同的键加入大字典

我有大约 10 个包含 python 字典的大文件,如下所示:

基本上它们都是字典的字典。每个文件大小约为 1 GB(以上只是数据示例)。无论如何,我想做的就是将这 10 部字典加入到一起:

我在小文件上尝试了以下代码,它工作正常:

但是,如果我在我的 1 GB 文件上尝试这样做,我会通过将 d1 和 d2 以及最终字典保存在内存中来快速耗尽内存。

我有几个想法:

  1. 有没有一种方法可以让我从分段字典中加载键,比较它们,如果在多个字典中找到相同的键,只需组合值?
  2. 与其将字典合并到一个巨大的文件中(这将来可能会让我记忆犹新),如何在合并数据后创建多个包含一个键的所有值的单独文件?例如,对于上述数据,我将只有:

    /li>

作为生物学家,我没有太多的编程经验(您可能已经猜到上述数据代表了生物信息学问题),因此非常感谢任何帮助!

0 投票
1 回答
6197 浏览

python - python collections.defaultdict,列表长度为 2

我有一种情况,一个键将有两个值,这些值将在程序期间更新。更具体地,从一个空字典 d = {} 开始,我想做这样的事情: d[a][0] += 1或者d[a][1] += 1其中a是一个浮点类型,在程序运行时也可以找到它。我可以做一些事情d = defaultdict(list([0,0]))(这会产生错误)吗?我希望字典中的默认值是两个元素的列表。我该怎么做呢?