我有两个列表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
答案 0 :(得分:0)
要组合多个行,请使用聚合。 这要求域名提取在SQL中完成:
SELECT substr(url, 1, instr(substr(url, 9), '/') + 8),
SUM(visit_count)
FROM moz_places
GROUP BY 1