Python如何基于字典信息对坐标数组进行标注得到目标序列
实现思路与代码
我们可以先把原字典Z的结构做一次转换,生成「坐标对对应标注值」的查询映射:因为Python中列表不能作为字典的key,所以我们把每个坐标列表转成元组来当key,对应的值就是Z里的key。后续遍历X的时候直接查映射表就能快速得到结果,时间复杂度只有O(n),比每次遍历Z查询效率高很多。
# 给定的原始数据 Z = { 1: [[7,0],[7,1]], 2: [[3,4],[2,4]], 3: [[0,3],[4,6]] } X = [[7,0],[0,3],[3,4],[4,6],[7,1],[2,4]] # 构建坐标映射表 coord_to_label = {} for label, coord_list in Z.items(): for coord in coord_list: coord_to_label[tuple(coord)] = label # 遍历X生成标注结果Y Y = [coord_to_label[tuple(coord)] for coord in X] print(Y) # 运行输出:[1, 3, 2, 3, 1, 2]
如果遇到X里存在Z中没有收录的坐标的情况,可以修改列表推导式加默认值,避免抛出KeyError:
# 找不到对应标注时默认返回None,可自行修改默认值 Y = [coord_to_label.get(tuple(coord), None) for coord in X]
内容的提问来源于stack exchange,提问作者DaedalusVandalgyon
相关产品推荐
相关产品推荐

