You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现两数组匹配相同坐标点新增统一ID列的方法咨询

实现代码

# 示例输入
a = [[1, 4500, 5000], [2, 4600, 5100], [3, 4700, 5200]]
b = [[3, 4500, 5000], [1, 4600, 5100], [2, 4700, 5200]]

# 初始化坐标映射字典和统一ID计数器
coord_to_unified_id = {}
current_unified_id = 1

# 遍历数组a,注册所有坐标的统一ID
for row in a:
    x, y = row[1], row[2]
    coord_key = (x, y)
    if coord_key not in coord_to_unified_id:
        coord_to_unified_id[coord_key] = current_unified_id
        current_unified_id += 1

# 遍历数组b,补充注册a中不存在的坐标的统一ID
for row in b:
    x, y = row[1], row[2]
    coord_key = (x, y)
    if coord_key not in coord_to_unified_id:
        coord_to_unified_id[coord_key] = current_unified_id
        current_unified_id += 1

# 生成带统一ID的新数组
a_new = []
for row in a:
    original_id, x, y = row
    a_new.append([original_id, coord_to_unified_id[(x, y)], x, y])

b_new = []
for row in b:
    original_id, x, y = row
    b_new.append([original_id, coord_to_unified_id[(x, y)], x, y])

# 打印结果验证
print("a_new =", a_new)
print("b_new =", b_new)

逻辑说明

  • 全程采用循环逻辑实现,未使用排序方案,符合需求
  • 用字典存储(X坐标, Y坐标)与统一ID的映射关系,查询效率高,适合任意规模的数组处理:
    • 元组作为字典键的原因是:列表为可变类型,无法作为字典的键,元组为不可变类型,可直接作为键使用
    • 先遍历两个数组收集所有坐标,为每个新出现的坐标分配递增的统一ID,确保相同坐标对应同一个ID
  • 兼容两个数组存在独有坐标的场景,即使某组坐标只出现在a或只出现在b中,也能正常分配唯一的统一ID

运行上述代码输出结果和期望输出完全一致:

a_new = [[1, 1, 4500, 5000], [2, 2, 4600, 5100], [3, 3, 4700, 5200]]
b_new = [[3, 1, 4500, 5000], [1, 2, 4600, 5100], [2, 3, 4700, 5200]]

内容的提问来源于stack exchange,提问作者Sbobby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:27:03