JSON GroupBy 2属性Python

2024-09-28 19:04:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试聚合JSON属性时遇到了一些困难。 基本上,我要做的是按'InputTable'数组中的对象按两个属性'To''TemplateName'分组。JSON模板如下所示:

x = {
        "InputTable" : 
        [
            {
                "ServerName":"ServerOne",
                "To":"David", 
                "CC":"Oren", 
                "TemplateName":"LinuxVMOne", 
            },
            {
                "ServerName":"ServerTwo",
                "To":"David", 
                "CC":"", 
                "TemplateName":"LinuxVMOne", 
            },
            {
                "ServerName":"ServerThree",
                "To":"David", 
                "CC":"", 
                "TemplateName":"LinuxVMTwo", 
            },
            {
                "ServerName":"ServerFour",
                "To":"Sam", 
                "CC":"Samer", 
                "TemplateName":"LinuxVMOne", 
            }   
        ]
}

预期结果如下所示,包含分组对象的列表列表:

[ 
   [

      {
                "ServerName":"ServerOne",
                "To":"David", 
                "CC":"Oren", 
                "TemplateName":"LinuxVMOne"
      },
      {
                "ServerName":"ServerTwo",
                "To":"David", 
                "CC":"", 
                "TemplateName":"LinuxVMOne", 
      },

  ],

  [
      {
                "ServerName":"ServerThree",
                "To":"David", 
                "CC":"", 
                "TemplateName":"LinuxVMTwo", 
      },

  ],

  [
      {
                "ServerName":"ServerFour",
                "To":"Sam", 
                "CC":"Samer", 
                "TemplateName":"LinuxVMOne", 
      }
  ] 



]

]

有没有可能不用熊猫来做呢? 谢谢你


Tags: to对象json属性ccdavidservernametemplatename
1条回答
网友
1楼 · 发布于 2024-09-28 19:04:53

此代码适用于:

但我认为我们可以做一个代码更干净

y = []
for i in x["InputTable"]:
    if len(y) == 0:
        y.append([i])
    else:
        for j in y:
            if len(j) > 0:
                if j[0]["To"] == i["To"] and j[0]["TemplateName"] == i["TemplateName"]:
                    j.append(i)
                    break
                else:
                    y.append([i])
                    break   
            else:
                y.append([i])
                break

相关问题 更多 >