代码之家  ›  专栏  ›  技术社区  ›  MRM

什么是建立词典的快速方法?[副本]

  •  0
  • MRM  · 技术社区  · 6 年前

    这个问题已经有了答案:

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

    my_dict = {i:obj_id.count(i) for i in obj_id}
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Jae Yang    6 年前

    代码运行如此缓慢的原因是,查找计数的时间复杂性为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
        }
    }