我有一张这样的单子
"Tournaments": [
{
"Scrambling": "61.90",
"Total_Putts_GIR": 85,
"SG_Putting": 0.99,
"Tournament": "Sony_Open",
"Date": "01-09-2020"
},
{
"Scrambling": "68.75",
"Total_Putts_GIR": 93,
"SG_Putting": 1.1,
"Tournament": "Waste_Management",
"Date": "01-30-2020"
},
{
"Scrambling": "64.71",
"Total_Putts_GIR": 70,
"SG_Putting": -0.26,
"Tournament": "WGC_Mexico",
"Date": "02-20-2020"
},
{
"Scrambling": "57.14",
"Total_Putts_GIR": 40,
"SG_Putting": -1.45,
"Tournament": "Charles_Schwab",
"Date": "06-11-2020"
},
{
"Scrambling": "73.68",
"Total_Putts_GIR": 82,
"SG_Putting": 1.65,
"Tournament": "RBC_Heritage",
"Date": "06-18-2020"
},
{
"Scrambling": "66.67",
"Total_Putts_GIR": 92,
"SG_Putting": 0.34,
"Tournament": "Rocket_Mortgage",
"Date": "07-02-2020"
},
{
"Scrambling": "83.33",
"Total_Putts_GIR": 101,
"SG_Putting": 1.19,
"Tournament": "Shriners_Hospital_for_Children_Open",
"Date": "10-08-2019"
}
]
我曾经
for obj in player_stats:
for tournament in obj['Tournaments']:
obj['Tournaments'].sort(key=operator.itemgetter('Date'))
然而,为了对它们进行分类,它将2019年列为底部。当我添加reverse=True
时,它也会反转月份。我尝试使用obj['Tournaments'].sort(key=lambda x: tournament['Date'])
,但这只是以相同的顺序返回dict。我需要返回目录列表,按2019年、2020年排序,然后按月份排序,然后按天排序
解决方案
另一个选项是使用
pandas
库对词典进行排序。现在,这可能是有争议的,因为有时你可能不需要带熊猫来,但是,这取决于你正在处理的问题/要求的类型。用熊猫来可视化和处理数据通常更容易我会让你来决定你是否想使用熊猫来完成这项任务,同时我会留下一个说明,说明你可以多么容易地将结果可视化,并用熊猫对结果进行排序
加载字典列表并对其排序
单线解决方案如下:
让我们把它分解,了解它在做什么
A.对
DataFrame
B.将
DataFrame
转换为dict
输出:
虚拟数据
为了再现性,我更愿意保留问题中提供的样本/虚拟数据以及用于回答的数据的记录
日期以字符串表示,并按字典顺序排序。这就是为什么,例如,
'10-08-2019'
在'07-02-2020'
之后排序一种解决方法是将字符串解析为
datetime.datetime
对象以进行排序使用YYYYMMDD格式的排序键。(您的日期格式为MM-DD-YYYY。)
给出:
相关问题 更多 >
编程相关推荐