python - 使用python在JSON中对日期“yyyy-mm-dd”进行排序
问题描述
我有一个关于使用 python 在 JSON 中进行数据排序的问题。这是我拥有的数据:
{
"DE":[{
"Date": "2020-01-18",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-15",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-17",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-13",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
...],
"AL":[{
"Date": "2020-01-18",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-15",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-17",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-13",
"Confirmed Cases": 4,
"Predicted Cases": 13
....
}],
....
}
"DE
是州"AL"
的名称,共有 50 个。在每个州内,都有一个大列表,以字典的形式保存每一天的数据。我的问题是"Date"
在这种情况下如何对它进行排序,以便它可以更改为:
{
"DE":[{
"Date": "2020-01-13",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-15",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-17",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-18",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
...],
"AL":[{
"Date": "2020-01-13",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-15",
"Confirmed Cases": 4,
"Predicted Cases": 13
},
{
"Date": "2020-01-17",
"Confirmed Cases": 50,
"Predicted Cases": 0
},
{
"Date": "2020-01-18",
"Confirmed Cases": 50,
"Predicted Cases": 0
}
...
],
....
}
我是 python 和数据处理的新手。我想了很多方法,但它们都有不同的缺陷。因此,你们能帮助我吗?非常感谢
解决方案
答案是一个简单的for
循环和sort
函数。在您的情况下,您可以遍历字典中的所有条目并在它们上调用 sort ,因为它们sort
将就地运行。排序通过自定义键函数工作,该函数使用Date
条目作为排序键。
如果您想在排序过程中颠倒顺序,您可以reverse=True
在sort
调用中设置。
for _, entries in data.items():
entries.sort(key=lambda entry: entry['Date'])
结果:
{
'DE': [
{'Date': '2020-01-13', 'Confirmed Cases': 4, 'Predicted Cases': 13},
{'Date': '2020-01-15', 'Confirmed Cases': 4, 'Predicted Cases': 13},
{'Date': '2020-01-17', 'Confirmed Cases': 50, 'Predicted Cases': 0},
{'Date': '2020-01-18', 'Confirmed Cases': 50, 'Predicted Cases': 0}
],
'AL': [
{'Date': '2020-01-13', 'Confirmed Cases': 4, 'Predicted Cases': 13},
{'Date': '2020-01-15', 'Confirmed Cases': 4, 'Predicted Cases': 13},
{'Date': '2020-01-17', 'Confirmed Cases': 50, 'Predicted Cases': 0},
{'Date': '2020-01-18', 'Confirmed Cases': 50, 'Predicted Cases': 0}
]}
推荐阅读
- firebase - 是否可以检查是否已经值然后不设置该字段?
- python - 有没有更好的方法来使用熊猫的“ffill”方法进行分段填充?
- javascript - 为什么像这样的数组旁边的字符串文字不会在 javascript 中引发语法错误?
- ruby-on-rails - 从 AWS S3 Bucket 获取数据文件并在 Rails 中解析?
- java - 如何解决 Spring Boot 中的“异常评估 SpringEL 表达式”?
- swift - 使用 Swift 在 Core Data 中创建多对多关系
- php - 修复流明分页从零开始
- swift - Swift/Xcode:尝试访问在另一个函数中更新的局部变量
- android - 在 RecyclerAdapter 中隐藏基于上下文的图标,给出空指针
- javascript - 苗条: $: 是什么意思?