如何修改Python代码去除重复链及与主机重复的链并优化输出
代理链去重(保留权重)的代码修改方案
1. 处理连续重复的链条节点
在生成单条代理链的逻辑后,加入连续节点去重的步骤——遍历链条时只保留与上一个节点不同的元素,避免连续重复。
示例代码片段:
def clean_continuous_duplicates(chain): cleaned = [] last_node = None for node in chain: if node != last_node: cleaned.append(node) last_node = node return cleaned
把这个函数插入到每条代理链生成完成后、加入结果集之前的位置,对生成的原始链做清洗。
2. 过滤与CORE主机链重复的条目
先定义CORE链的基准值,再在收集结果时,跳过和基准链完全一致的清洗后链条,同时保留其余链条的权重。
示例代码片段:
# 假设你的CORE主机链是这个结构 CORE_BASE_CHAIN = ["节点1", "节点2", "CORE"] # 假设generated_chains是你原有代码生成的(链条, 权重)列表 final_result = [] for raw_chain, weight in generated_chains: cleaned_chain = clean_continuous_duplicates(raw_chain) # 跳过与CORE链完全重复的条目 if cleaned_chain != CORE_BASE_CHAIN: final_result.append( (cleaned_chain, weight) )
3. 可选:合并重复链条的权重
如果清洗后出现多条完全一致的链条,可以合并它们的权重值,进一步精简输出:
weight_counter = {} for chain, weight in final_result: # 列表无法作为字典键,转成元组 chain_key = tuple(chain) if chain_key in weight_counter: weight_counter[chain_key] += weight else: weight_counter[chain_key] = weight # 转回列表格式输出 merged_result = [ (list(chain), total_weight) for chain, total_weight in weight_counter.items() ]
修改位置参考
- 若你是逐一生成单条链:在每条链生成的代码块末尾,调用清洗函数,再判断是否跳过CORE链,最后加入结果集。
- 若你是批量生成所有链后统一处理:在所有链生成完成后,先批量做连续节点清洗,再过滤CORE链,最后按需合并权重。
内容的提问来源于stack exchange,提问作者mama b
相关产品推荐
相关产品推荐

