Python对比嵌套列表、将共享3个及以上URL的关键词分组的实现方法
实现思路与代码示例
第一步:数据结构预处理
首先把所有关键词和对应的URL整理为字典,URL用集合类型存储,方便后续快速计算两个URL列表的交集。
# 示例输入数据,把你自己的关键词和对应URL替换进来即可 keyword_url_map = { "关键词A": {"url1", "url2", "url3", "url4", "url5", "url6", "url7", "url8", "url9", "url10"}, "关键词B": {"url2", "url3", "url4", "url11", "url12", "url13", "url14", "url15", "url16", "url17"}, "关键词C": {"url3", "url4", "url11", "url18", "url19", "url20", "url21", "url22", "url23", "url24"}, "关键词D": {"url25", "url26", "url27", "url28", "url29", "url30", "url31", "url32", "url33", "url34"} }
第二步:聚类逻辑实现
你的需求本质是找连通分量:只要两个关键词满足共享URL≥3的条件,就归为同一组,组内所有关联的关键词都会被聚合到一起。
clusters = [] # 存储最终的分组结果 processed_keywords = set() # 记录已经被分到组里的关键词,避免重复处理 for keyword in keyword_url_map: # 如果当前关键词已经被处理过,直接跳过 if keyword in processed_keywords: continue # 新建一个分组,先把当前关键词加进去 current_cluster = [keyword] processed_keywords.add(keyword) # 遍历所有还没处理的关键词,判断是否符合加入当前分组的条件 for other_keyword in keyword_url_map: if other_keyword in processed_keywords: continue # 计算两个关键词URL的交集数量 common_url_count = len(keyword_url_map[keyword] & keyword_url_map[other_keyword]) if common_url_count >= 3: current_cluster.append(other_keyword) processed_keywords.add(other_keyword) # 把当前分组合并到最终结果里 clusters.append(current_cluster) # 打印最终分组结果 for idx, cluster in enumerate(clusters, 1): print(f"分组{idx}: {cluster}")
运行结果说明
以上面的示例输入为例,运行后会输出:
分组1: ['关键词A', '关键词B', '关键词C'] 分组2: ['关键词D']
新手注意事项
- 如果你原来的URL是存在列表里的,转成集合只需要调用
set(你的URL列表变量)即可,不需要手动改格式 - 用集合计算交集的效率远高于遍历列表逐一比对,数据量越大优势越明显
- 代码已经处理了连锁分组的场景:比如A和B符合条件、B和C符合条件,A、B、C会自动归为同一组,不需要额外写逻辑处理
内容的提问来源于stack exchange,提问作者Brian Owens
相关产品推荐
相关产品推荐

