如何比对四组列表并提取匹配对应的value_search值?
解决方案
核心思路
先把brand_search和value_search构建成品牌-值的映射字典,快速通过品牌名匹配对应value;再遍历brand和search_type的配对组合,提取目标值并按指定规则截取。
代码实现
brand = ["brand_1", "brand_2"] search_type = [4, 10] brand_search = ["brand_1", "brand_2","brand_3"] value_search = ["value1", "value_2","value_3"] # 构建品牌与对应值的映射字典 brand_value_map = dict(zip(brand_search, value_search)) processed_results = [] # 遍历每个品牌和对应的截取长度 for target_brand, cut_length in zip(brand, search_type): if target_brand in brand_value_map: raw_value = brand_value_map[target_brand] # 按指定长度截取(示例取前cut_length个字符,可按需修改截取逻辑) trimmed_value = raw_value[:cut_length] processed_results.append((target_brand, trimmed_value)) else: # 处理品牌未匹配到的情况 processed_results.append((target_brand, None)) # 输出结果 for brand_name, value in processed_results: print(f"{brand_name}: {value}")
代码说明
- 映射字典构建:
dict(zip(brand_search, value_search))将两个列表对应位置的元素组成键值对,查找效率远高于循环遍历列表找索引。 - 配对遍历:
zip(brand, search_type)确保每个品牌和对应的截取规则一一对应,避免索引错位问题。 - 截取逻辑:示例中用
raw_value[:cut_length]实现按长度截取,若你的需求是按分隔符或其他规则截取,直接替换这部分代码即可。
备选方案(无字典实现)
如果不想用字典,也可以通过索引匹配实现(适合小规模列表场景):
processed_results = [] for i in range(len(brand)): target_brand = brand[i] cut_length = search_type[i] try: # 获取目标品牌在brand_search中的索引 brand_index = brand_search.index(target_brand) raw_value = value_search[brand_index] trimmed_value = raw_value[:cut_length] processed_results.append((target_brand, trimmed_value)) except ValueError: # 品牌未找到时返回None processed_results.append((target_brand, None))
内容的提问来源于stack exchange,提问作者Antônio Miranda
相关产品推荐
相关产品推荐

