我正在搜索广告列表(adscrape)。每个广告都是adscrape中的命令(例如下面的广告)。它搜索ID列表(database_id),这些ID的长度可能在200,000-1,000,000之间。我想在adscrape中找到在database_ids中没有ID的任何广告。

我当前的代码如下。这需要很长的时间,每个广告都需要数秒钟才能扫描database_ids。有没有一种更有效/更快的方式来运行此方法(查找一个大列表中的项目,另一个大列表中的项目)?

database_ids = ['id1','id2','id3'...]
ad = {'body': u'\xa0SUV', 'loc': u'SA', 'last scan': '06/02/16', 'eng': u'\xa06cyl 2.7L ', 'make': u'Hyundai', 'year': u'2006', 'id': u'OAG-AD-12371713', 'first scan': '06/02/16', 'odo': u'168911', 'active': 'Y', 'adtype': u'Dealer: Used Car', 'model': u'Tucson Auto 4x4 ', 'trans': u'\xa0Automatic', 'price': u'9990'}

for ad in adscrape:
    ad['last scan'] = date
    ad['active'] = 'Y'
    adscrape_ids.append(ad['id'])
    if ad['id'] not in database_ids:
        ad['first scan'] = date
        print 'new ad:',ad
        newads.append(ad)

最佳答案

您可以为此使用列表推导作为下面给出的代码库。如上所述,使用现有的database_ids列表和adscrape dict。

代码库:
new_adds_ids = [如果ad ['id']不在database_ids中,则广告在adscrape中的广告]`

关于python - Python搜索循环慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35243090/

10-12 19:29