[英]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.