我有一个带有如下数据的平面CSV文件:
tag1,pageA
tag2,pageA
tag3,pageA
tag1,pageB
tag4,pageB
tag5,pageC
tag5,pageD
tag4,pageE
tag6,pageE我想以某种方式将pages分割成相互排斥的组,这取决于它们直接或通过关联共享的所有tags。
换句话说,我想回答的问题是:
例如,除非我错算,否则上面的样本数据有两组:
Group 1:
(tag1,tag2,tag3,tag4,tag6) ==>
(pageA,pageB,pageE)
Group 2:
(tag5) ==>
(pageC,pageD)获得这些分组的合理方法是什么?我愿意使用Python,sqlite,或者两者兼用。
发布于 2015-03-16 00:21:02
dic = {}
def add2dic(tag, page):
try:
dic[tag].append(page)
except KeyError:
dic[tag] = [page]
add2dic('tag1','pageA')
add2dic('tag2','pageA')
add2dic('tag3','pageA')
add2dic('tag1','pageB')
add2dic('tag4','pageB')
add2dic('tag5','pageC')
add2dic('tag5','pageD')
add2dic('tag4','pageE')
add2dic('tag6','pageE')
def query(iterable):
aset = set()
for tag in iterable:
for page in dic[tag]:
aset.add(page)
return sorted(list(aset))
print(query(['tag1','tag2','tag3','tag4','tag6']))
print(query(['tag5']))‘页面A’,‘页面B’,'pageE‘
'pageD‘,’pageD‘
https://stackoverflow.com/questions/29067693
复制相似问题