python-list (列表)和 dict (字典)的查询速度比较

通过列表的形式进行文本关键词检索,进行博彩类预测,查看程序时间: 

import jieba
import pandas as pd
import numpy as np
import os
from collections import Counter 
from time import *

root_dir = os.path.realpath(__file__ + "/..")
betting_keys = []
betting_path = root_dir + "/betting_keys.csv"
betting_df = pd.read_csv(betting_path)
######################## 列表形式#####################
betting_keys = np.array(betting_df['关键词']).tolist()  

def predict_betting(title, content, search_keys=''):
    count = 0
    text = title + content + search_keys
    words = jieba.lcut(text.strip())
    for i in words:
        ############列表的检索################
        if i in betting_keys :
            count += 1
    if count > 1:
        return 'True'
    else:
        return 'False'

if __name__ == '__main__':
    begin_time = time()
    print(predict_betting('超级网络"赌局" 赌金每天约5000万',
                          '小王在过去一个半月的时间里,每天做的事情就是用手机玩德州扑克赌博游戏,每天赌博的时间至少是8个小时,几乎从睡醒后就开始上网赌博。他说:“没办法,上瘾了,睁眼开始就想赌,想赢钱。”'))
    
    end_time = time()
    run_time = end_time-begin_time
    print(run_time)

结果为:

修改两个地方:

##############关键词形式为字典############
betting_keys = np.array(betting_df['关键词']).tolist()  # 赌博类关键词
betting_keys_dict=dict(Counter(betting_keys))

###############字典检索##################
if i in betting_keys_dict:

查看结果:

虽然相差不多,但是却有提升,和数据的大小有关,数据越大,越能看出差距。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值