我正在构建一个类,其中包括一个带有整数键和列表值的字典。给这个字典添加值似乎是一个真正的瓶颈,我想知道是否有某种方法可以加快我的代码。在
class myClass():
def __init__(self):
self.d = defaultdict(list)
def addValue(self, index, value):
self.d[index].append(value)
这真的是最好的方法吗?我并不真正关心值的顺序,所以可能有一个更适合的数据结构,它具有更快的附加。再说一次,“append”似乎不是主要问题,因为如果我简单地附加到一个空列表中,代码会快得多。我猜是加载之前存储的列表占用了大部分时间?在
我发现问题不在dict中,而是在list-append中(尽管我在我的原始帖子中声明了另一个问题,对此我深表歉意)。这个问题是由于Python的垃圾回收器中的一个错误引起的,这在this other question上有很好的解释。在添加所有值之前禁用gc,然后重新启用它,可以极大地加快进程!在
比较一下:
他们说“请求原谅比请求允许好”。现在你并没有亲自请求许可,但我想也许
defaultdict
可以,这就是减慢速度的原因。在try
这:它试图访问字典中的
index
键,如果它不存在,它将引发一个KeyError
,并对其进行操作。在快一点吗?在
最后,我可以说,我在原始问题中的代码比所有其他建议都快或一样快。在
相关问题 更多 >
编程相关推荐