将两个列表合并为字典时如何为每个键分配指定数量的对应值
你可以通过先对URL列表按分片数切分,再和镜像站列表配对的方式实现需求,代码示例如下:
基础实现(适合数据量不大的场景)
# 你的预设变量 part_num = 7 mirror_list = ["Mirror1", "Mirror2", "Mirror3"] # 替换为你的镜像站列表 url_list = ["Url1", "Url2", "Url3", "Url4", "Url5", "Url6", "Url7", "Url8", "Url9", "Url10", "Url11", "Url12", "Url13", "Url14"] # 替换为你的全量URL列表 # 按分片数切分URL列表 sliced_url_groups = [url_list[i*part_num : (i+1)*part_num] for i in range(len(mirror_list))] # 生成目标字典 mirror_dict = dict(zip(mirror_list, sliced_url_groups))
运行后得到的mirror_dict结构和你预期的完全一致:
{ "Mirror1": ["Url1", "Url2", "Url3", "Url4", "Url5", "Url6", "Url7"], "Mirror2": ["Url8", "Url9", "Url10", "Url11", "Url12", "Url13", "Url14"] }
迭代器版本(适合URL列表数据量很大的场景,降低内存占用)
from itertools import islice def chunk_generator(lst, chunk_size): iter_lst = iter(lst) while chunk := list(islice(iter_lst, chunk_size)): yield chunk mirror_dict = dict(zip(mirror_list, chunk_generator(url_list, part_num)))
可选校验逻辑
如果需要提前确认URL数量足够分配,可以在生成字典前添加校验:
required_url_count = len(mirror_list) * part_num if len(url_list) < required_url_count: raise ValueError(f"URL数量不足,共需要{required_url_count}个,当前仅提供{len(url_list)}个")
内容的提问来源于stack exchange,提问作者Senuvox
相关产品推荐
相关产品推荐

