在相应列表中添加值时删除多个条目

时间:2014-10-26 00:20:26

标签: python sqlite firefox

我有两个列表final_domain(它包含域名列表)和final_count(它包含相应的命中或计数)。我想通过删除多个条目来对域名进行排序,同时相应增加final_count列表中的命中或计数。 我怎么能这样做?

原始代码:

import sqlite3
import os
import collections
from urlparse import urlparse
#diretory path (for windows only)

os.chdir(r"C:\Users\vivek\AppData\Roaming\Mozilla\Firefox\Profiles\qoupopgx.default")

final_domain=[]
final_url=[]
final_count=[]

#Fecthing urls from the firefox database

db = sqlite3.connect("places.sqlite")
urls = db.execute("SELECT url FROM moz_places").fetchall()
for url in urls:
     final_url.append(url[0])


#Converting url to domain_name

for temp in final_url:
     parsed_uri = urlparse(temp)
     domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
     final_domain.append(domain)
     #print domain


#Fecthing url count from the firefox database

count = db.execute("SELECT visit_count FROM moz_places").fetchall()
for temp1 in count:
     final_count.append(temp1[0])
     #print temp1[0]

在这段代码中,我从Firefox中获取历史记录,然后从sqlite数据库中提取url和visit_count。我已经成功从网址中提取了域名,并且访问了access_count。但是final_domain中的条目可能是多个:

6d6d893d.reverse.layershift.co.uk/
6d6d893d.reverse.layershift.co.uk/
6d6d893d.reverse.layershift.co.uk/
9gag.com/
9gag.com/
9gag.com/

他们在final_count中有一些相应的命中:5,6,7,2,3,1

我必须将它们合并为:(所需的输出)

6d6d893d.reverse.layershift.co.uk/
9gag.com/

具有相应的命中:18,6

1 个答案:

答案 0 :(得分:0)

要组合多个行,请使用聚合。 这要求域名提取在SQL中完成:

SELECT substr(url, 1, instr(substr(url, 9), '/') + 8),
       SUM(visit_count)
FROM moz_places
GROUP BY 1