如何比较两个二维list并提取值存在差异的对应id
问题需求
有两个二维数组,每个子元素的第0位为id,第1位为该id对应的取值。需要对比两个数组,返回所有在第二个数组中取值和第一个数组不一致的id。
示例如下:
list1 = [[1,0], [2,1], [3,0]] # 结构为[[id, value]] list2 = [[1,1], [2,1], [3,1]] # 结构为[[id, value]] getDifference(list1, list2) # 返回结果 [1, 3]
实现思路
- 先将第一个数组转换为id到取值的映射字典,查询时间复杂度为O(1),避免嵌套循环降低效率
- 遍历第二个数组的所有元素,将当前元素的取值和字典中同id的取值做对比
- 收集所有取值不一致的id作为结果返回
代码实现
def getDifference(list1, list2): # 构建list1的id-值映射字典 id_value_map = {item[0]: item[1] for item in list1} result = [] for item in list2: current_id, current_value = item # 若需要将list2存在但list1不存在的id也视为差异,可删除current_id in id_value_map判断 if current_id in id_value_map and current_value != id_value_map[current_id]: result.append(current_id) return result
测试验证
list1 = [[1,0], [2,1], [3,0]] list2 = [[1,1], [2,1], [3,1]] print(getDifference(list1, list2)) # 输出:[1, 3]
内容的提问来源于stack exchange,提问作者geek glance
相关产品推荐
相关产品推荐

