首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按键对字典排序

按键对字典排序
EN

Stack Overflow用户
提问于 2021-10-07 04:17:38
回答 1查看 23关注 0票数 0

我有一个字典,它以年和月的组合作为键和值。我使用OrderedDict对字典进行排序,得到如下结果。在我的预期结果中,在"2021-1“之后,应该是"2021-2”。但"2021-10“即将到来。

代码语言:javascript
运行
复制
{
    "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
}

我的预期结果应该如下所示。我希望字典按最小日期到最后一个日期排序

代码语言:javascript
运行
复制
{
        "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
    }

如果你能帮忙,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-10-07 06:51:35

如果要自定义排序的方式,请使用带有参数keysorted

代码语言:javascript
运行
复制
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来避免任何不可靠的浮点精度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69475396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档