如何将爬虫输出的品牌产品列表转为品牌为键的字典并追加值
把品牌-产品列表转换为分组字典的几种方法
嘿,这个需求在数据整理里太常见了!我给你分享几个实用的Python实现方式,轻松把两个列表转成你想要的字典格式。
方法1:基础循环(新手友好,逻辑清晰)
这是最直观的写法,适合刚接触Python的同学理解整个过程:
brands = ["a", "b", "c", "a", "a", "b"] products = [1, 2, 3, 4, 5, 6] # 初始化空字典 product_dict = {} # 同时遍历品牌和产品列表(用zip配对元素) for brand, product in zip(brands, products): # 如果品牌已经在字典里,就追加产品到列表 if brand in product_dict: product_dict[brand].append(product) # 否则创建新的键,值为包含当前产品的列表 else: product_dict[brand] = [product] print(product_dict) # 输出结果: {'a': [1, 4, 5], 'b': [2, 6], 'c': [3]}
方法2:用collections.defaultdict(简洁高效)
如果你想让代码更简洁,Python标准库的defaultdict能帮你省去判断键是否存在的步骤——它会自动为不存在的键创建一个空列表:
from collections import defaultdict brands = ["a", "b", "c", "a", "a", "b"] products = [1, 2, 3, 4, 5, 6] # 初始化默认值为列表的字典 product_dict = defaultdict(list) for brand, product in zip(brands, products): # 直接追加就行,不用判断键是否存在 product_dict[brand].append(product) # 可选:如果需要转换成普通字典(不是必须的,defaultdict本身也能正常使用) product_dict = dict(product_dict) print(product_dict) # 输出结果和上面一致
小提示
- 确保
brands和products两个列表的长度一致哦,zip()会以较短的列表为准截断数据。如果爬虫返回的列表长度不一致,得先排查下爬虫的抓取逻辑是不是哪里出问题了~ - 要是你用的是Python 3.9+,还可以用字典的
|=运算符配合列表推导,但上面两种方法已经足够实用啦。
内容的提问来源于stack exchange,提问作者Petzo
相关产品推荐
相关产品推荐

