繁体   English   中英

如何对 Python 中的 json 特定键值进行排序

[英]How to sort json specific key value in Python

我正在尝试按“计数”键值对 json 进行排序:

{
  "17-April": {
    "https://www.dom1.com/": [
      {
        "Cant": 5
      },
      {
        "Links": [
          "https://www.dom1.com/1",
          "https://www.dom1.com/2",
          "https://www.dom1.com/3",
          "https://www.dom1.com/4",
          "https://www.dom1.com/5"
        ]
      }
    ],
    "https://www.dom2.com/": [
      {
        "Cant": 3
      },
      {
        "Links": [
          "https://www.dom2.com/",
          "https://www.dom2.com/",
          "https://www.dom2.com/"
    ],
    "https://www.dom3.com/": [
      {
        "Cant": 4
      },
      {
        "Links": [
          "https://www.dom3.com/1",
          "https://www.dom3.com/2",
          "https://www.dom3.com/3",
          "https://wwwdom3.com/4"
        ]
      }
    ]
  },
  "19-April": {
    "https://www.dom1.com/": [
      {
        "Cant": 7
      },
      {
        "Links": [
          "https://www.dom1.com/1",
          "https://www.dom1.com/2",
          "https://www.dom1.com/3",
          "https://www.dom1.com/4",
          "https://www.dom1.com/5",
          "https://www.dom1.com/6",
          "https://www.dom1.com/7"
        ]
      }
    ],
    "https://www.dom2.com/": [
      {
        "Cant": 2
      },
      {
        "Links": [
          "https://www.dom2.com/",
          "https://www.dom2.com/"
        ]
      }
    ],
    "https://www.dom3.com/": [
      {
        "Cant": 8
      },
      {
        "Links": [
          "https://www.dom3.com/1",
          "https://www.dom3.com/2",
          "https://www.dom3.com/3",
          "https://www.dom3.com/4",
          "https://www.dom3.com/5",
          "https://www.dom3.com/6",
          "https://www.dom3.com/7",
          "https://www.dom3.com/7"
        ]
      }
    ]
  }
}
}

这个 json 按日期重复,我想按“计数”键的值对其进行排序。

这个 json 按日期需要几个域,这就是为什么我想按计数排序,为了让它按域很好地排序,每天都有更多的链接

理想的排序方式是:按日期 -> 计数

所以数据的形状很粗糙......它是一个带有不可排序格式日期的字典,我会推荐 YYYY-MM-DD 以便它可以干净地排序。 日期的值是具有匿名键的字典,其值是数组不同的项目。

我强烈建议存储像 output 这样的数据: [{"date":"YYYY-MM-DD", "domains": [{"domain": "string:", "count": 1, "links": ["link1"]}]}]

如果你不能这样做,那么这个块会将你的示例迁移到该结构中:

cleaned_data = []
for date, v in data.items():
    o = {
        'date': date,
        'domains': []
    }
    for domain, dv in v.items():
        o['domains'].append({
            'domain': domain,
            'count': dv[0]['Cant'],
            'links': dv[1]['Links']
        })
    cleaned_data.append(o)

这个块将根据需要对其进行排序。 (注意我不是在玩日期时间转换......我不认为这个问题的范围。)

for v in cleaned_data:
    v['domains'] = sorted(v['domains'], key = lambda i: i['count'])

sorted_data = sorted(cleaned_data, key = lambda i: i['date'])
print(sorted_data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM