代码之家  ›  专栏  ›  技术社区  ›  Em Ae

优化创建列表字典

  •  0
  • Em Ae  · 技术社区  · 7 年前

    我有一个跟班

    class Test:
        self.value = 0
        self.name = ''
    

    我有上百万条记录,我只想根据它们的 name . 我创建了一个名为 whitelist_names . 我制作dictionary list对象的方式是这样的

    '''input_value and input_name are being feed from a file-read'''
    map_list = {}
    
    t = Test(input_value, input_name)
    
    if t.input_name in whitelist_names:
        name_list = []
        if t.input_name in map_list:
            name_list = map_list[t.input_name]
        name_list.append(t)
        map_list[t.input_name] = name_list
    

    上面这段代码要花很长时间。我对python还不熟悉,所以我只想确定我做的是否正确。

    1 回复  |  直到 7 年前
        1
  •  0
  •   RFmyD    7 年前

    当你在检查某个名字是否在列表中时,花一段时间是很合乎逻辑的。如果白名单上的名字都是唯一的,你可以使用一个集合而不是一个列表。集合理解比列表快得多。

    此外,我建议您使用字典,而不是实现一个类来保存名称及其出现的次数。当字典被实现为哈希表时,检查条目是否存在是非常快的。