我正在建立一个包含整数键和列表值的字典。为这本字典增加值似乎是一个真正的瓶颈,但我想知道是否有某种方法可以加速我的代码。Python:使用列表值添加到字典的最佳方式
class myClass():
def __init__(self):
self.d = defaultdict(list)
def addValue(self, index, value):
self.d[index].append(value)
这真的是这样做的最佳方式?我并不关心值的顺序,所以也许有一个更合适的数据结构,并有更快的附加值。然后,'追加'似乎不是主要问题,因为如果我简单地追加到一个空列表中,代码要快得多。我猜这是以前存储的列表大部分时间的加载?
我发现,这个问题是不是在快译通,但列表中的append(虽然我在原来的职位,对此我表示歉意另有要求)。这个问题是由于Python的垃圾收集器中的一个错误引起的,在this other question上有很好的解释。在添加所有值然后重新启用它之前禁用gc,将极大地加速该过程!
将项目添加到列表并获取对象或字典中的值都是不花时间的。为了加速程序,您可以通过分析找到瓶颈,而不是通过更改随机代码段。 –
将项目映射到现有密钥的速度明显快于将值添加到新密钥? –
我刚刚发现问题不在字典中,但在列表中追加(尽管我在原始文章中声明了其他内容,对此我表示歉意)。然后我在http://stackoverflow.com/questions/2473783/is-there-a-way-to-circumvent-python-list-append-becoming-progressively-slower上找到了我的问题的答案。由于我是这个网站的新手,在这种情况下,我不知道标准程序是什么:我应该删除原始文章吗?或者添加上面的细节并回复帖子? – niefpaarschoenen