如何根据列表A与B的匹配结果提取对应数字?
根据列表匹配提取对应数字的解决方案
问题说明
需要按照列表B的字母顺序,从列表A中提取对应字母后的数字,生成目标列表C。
代码实现
A = ['D(1)', ' A(2)', 'C(3)', 'B(4)', 'E(5)'] B = ['A','B','C','D','E'] # 构建字母与数字的映射字典 char_num_map = {} for item in A: # 去除元素前后的空白字符(处理带空格的条目如' A(2)') cleaned_item = item.strip() # 拆分字母和数字部分 char, num_part = cleaned_item.split('(') # 提取数字并转换为整数 num = int(num_part.rstrip(')')) char_num_map[char] = num # 根据B的顺序生成目标列表C C = [char_num_map[char] for char in B] print(f"C = {C}")
代码解释
- 清理与拆分元素:通过
strip()去除列表A中元素的前后空格,再用split('(')拆分出字母和带括号的数字部分。 - 构建映射字典:将字母作为键,提取并转换后的整数数字作为值存入字典,实现O(1)时间复杂度的快速查找。
- 生成目标列表:遍历列表
B,通过字典查找每个字母对应的数字,用列表推导式生成最终的C。
运行代码后输出结果为:C = [2,4,3,1,5],完全符合期望。
内容的提问来源于stack exchange,提问作者dereks1109
相关产品推荐
相关产品推荐

