我有一个字典,它以年和月的组合作为键和值。我使用OrderedDict对字典进行排序,得到如下结果。在我的预期结果中,在"2021-1“之后,应该是"2021-2”。但"2021-10“即将到来。
{
"2020-11": 25,
"2020-12": 861,
"2021-1": 935,
"2021-10": 1,
"2021-2": 4878,
"2021-3": 6058,
"2021-4": 3380,
"2021-5": 4017,
"2021-6": 1163,
"2021-7": 620,
"2021-8": 300,
"2021-9": 7
}我的预期结果应该如下所示。我希望字典按最小日期到最后一个日期排序
{
"2020-11": 25,
"2020-12": 861,
"2021-1": 935,
"2021-2": 4878,
"2021-3": 6058,
"2021-4": 3380,
"2021-5": 4017,
"2021-6": 1163,
"2021-7": 620,
"2021-8": 300,
"2021-9": 7,
"2021-10": 1
}如果你能帮忙,我将不胜感激。
发布于 2021-10-07 06:51:35
如果要自定义排序的方式,请使用带有参数key的sorted
from typing import OrderedDict
from decimal import Decimal
data = {
"2020-11": 25,
"2020-12": 861,
"2021-1": 935,
"2021-10": 1,
"2021-2": 4878,
"2021-3": 6058,
"2021-4": 3380,
"2021-5": 4017,
"2021-6": 1163,
"2021-7": 620,
"2021-8": 300,
"2021-9": 7
}
def year_plus_month(item):
key = item[0].replace("-", ".")
return Decimal(key)
data_ordered = OrderedDict(sorted(data.items(), key=year_plus_month))
print(data_ordered)我使用Decimal而不是float来避免任何不可靠的浮点精度。
https://stackoverflow.com/questions/69475396
复制相似问题