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

如何基于经纬度匹配两个JSON数据集并按名称ID分组

解决方案

首先需要修正你的Dataset1.json格式——原示例存在重复键,不符合JSON规范,正确格式应该是包含多个经纬度对象的数组:

[
  {"lat": 12, "lon": 13},
  {"lat": 14, "lon": 15}
]

以下是用Python实现的匹配逻辑,严格遵循你“遍历两个数据集、通过经纬度关联”的要求:

import json

# 1. 加载并解析两个数据集
with open("Dataset1.json", "r") as f:
    dataset1 = json.load(f)

with open("ControlData.json", "r") as f:
    # 适配ControlData每行一个JSON对象的格式
    control_data = [json.loads(line.strip()) for line in f if line.strip()]

# 2. 构建经纬度到设备信息的映射,提升匹配效率
lat_lon_map = {}
for device in control_data:
    key = (device["lat"], device["lon"])
    lat_lon_map[key] = {"name": device["name"], "id": device["id"]}

# 3. 遍历Dataset1,匹配并收集结果
matched_results = []
for coord in dataset1:
    current_key = (coord["lat"], coord["lon"])
    if current_key in lat_lon_map:
        device_info = lat_lon_map[current_key]
        matched_results.append({
            "name": device_info["name"],
            "id": device_info["id"],
            "lat": coord["lat"],
            "lon": coord["lon"]
        })

# 4. 格式化输出目标表格
print(f"{'Name':<6}{'ID':<4}{'lat':<8}{'lon':<8}")
for item in matched_results:
    print(f"{item['name']:<6}{item['id']:<4}{item['lat']:<8}{item['lon']:<8}")

代码说明:

  • 先将ControlData转换成经纬度为键的字典,避免每次匹配都遍历整个控制数据集,提升效率
  • 遍历Dataset1的每个经纬度,在映射中查找对应设备信息,匹配成功则加入结果列表
  • 最后用格式化字符串输出符合要求的表格样式

执行后输出如下:

Name  ID  lat     lon     
A     1   12      13      
B     2   14      15      

内容的提问来源于stack exchange,提问作者data-help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:05:40