Python多列表映射问题:根据J2获取A1对应元素
问题分析
你的代码逻辑错误在于直接将J2和A1按索引位置配对,而非基于J1与A1的对应关系匹配J2中的元素。zip(J2, A1)会把J2的第i个元素和A1的第i个元素绑定,因此只能取到A1的前两个元素,而非J1中与J2元素对应的A1值。
解决方案
方法一:字典映射(推荐,查询效率高)
如果J1中的元素是唯一的,先建立J1到A1的映射字典,再遍历J2获取对应值:
J1 = [1, 7, 9, 11] A1 = [2.1, 6.9, 7.3, 5.4] J2 = [1, 9] # 构建J1与A1的映射关系 j_a_map = dict(zip(J1, A1)) # 根据J2元素提取对应A1的值 A2 = [j_a_map[j] for j in J2] print(A2) # 输出:[2.1, 7.3]
方法二:列表推导式(适配J1含重复元素的场景)
如果J1存在重复元素,需要保留所有匹配项,可以用列表推导式筛选:
J1 = [1, 7, 9, 11] A1 = [2.1, 6.9, 7.3, 5.4] J2 = [1, 9] A2 = [a for j, a in zip(J1, A1) if j in J2] print(A2) # 输出:[2.1, 7.3]
内容的提问来源于stack exchange,提问作者rajunarlikar123
相关产品推荐
相关产品推荐

