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

C#读取JSON文件到内存并按表名与复制行数分组的实现求助

按表名和复制行数分组的嵌套字典实现

修正后的输入JSON

你的原始JSON缺少外层数组包裹,修正后格式如下:

[
  {
    "DatabaseType": "Customer",
    "TableName": "Test",
    "RowsCopied": "6"
  },
  {
    "DatabaseType": "Customer",
    "TableName": "JDJD",
    "RowsCopied": "202"
  },
  {
    "DatabaseType": "Hosting",
    "TableName": "Test",
    "RowsCopied": "6"
  },
  {
    "DatabaseType": "Logging",
    "TableName": "Test",
    "RowsCopied": "6"
  }
]

Python实现代码

用嵌套字典实现双层分组:外层键为TableName,内层键为RowsCopied,对应值是该分组下的所有DatabaseType列表:

import json

# 修正后的JSON数据
data = [
    {"DatabaseType": "Customer", "TableName": "Test", "RowsCopied": "6"},
    {"DatabaseType": "Customer", "TableName": "JDJD", "RowsCopied": "202"},
    {"DatabaseType": "Hosting", "TableName": "Test", "RowsCopied": "6"},
    {"DatabaseType": "Logging", "TableName": "Test", "RowsCopied": "6"}
]

# 初始化嵌套字典
grouped_data = {}

for item in data:
    table_name = item["TableName"]
    rows_copied = item["RowsCopied"]
    db_type = item["DatabaseType"]
    
    # 外层字典:TableName不存在则创建
    if table_name not in grouped_data:
        grouped_data[table_name] = {}
    # 内层字典:RowsCopied不存在则创建空列表
    if rows_copied not in grouped_data[table_name]:
        grouped_data[table_name][rows_copied] = []
    # 添加DatabaseType到对应分组
    grouped_data[table_name][rows_copied].append(db_type)

# 打印格式化后的结果
print(json.dumps(grouped_data, indent=2))

最终分组结果

运行代码后得到的嵌套字典如下:

{
  "Test": {
    "6": [
      "Customer",
      "Hosting",
      "Logging"
    ]
  },
  "JDJD": {
    "202": [
      "Customer"
    ]
  }
}

这个结构完全满足需求:先按TableName一级分组,再在每个表名下按RowsCopied二级分组,最后汇总对应分组的所有数据库类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:36:32