建立字典的快速方法是什么?

时间:2018-10-23 15:40:17

标签: python-3.x list dictionary

我需要从一个大约有300万个项目的列表中构建字典,现在我正在使用下面的代码,但是它运行了12个小时以上,但仍然没有完成。我想知道是否有更快的方法? 这是我现在正在使用的代码:

my_dict = {i:obj_id.count(i) for i in obj_id}

1 个答案:

答案 0 :(得分:0)

您的代码运行速度如此之慢的原因是,它需要O(N)的时间复杂度来找到计数,然后又需要O(N)的时间来填充字典。解决方案是遍历该列表,如果之前不存在键,则添加键obj和值1。如果确实如此,则只需增加该值即可。这将减少一些复杂性,因为访问和修改字典的时间为0(1)。

my_dict = {}
for obj in obj_id{
    if obj in my_dict{
        my_dict[obj] += 1
    }
    else{
        my_dict[obj] = 1
    }
}