如何按递增顺序重新排列dict键(例如:一年中的日期作为键)?Python3

2024-04-20 09:57:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近一直在使用字典,我正在做一个项目,其中包括将一天的事件保存到日历中。你知道吗

所以密钥的格式应该是yyyy-mm-dd的日期格式。我想这样做,以便字典中的每个“密钥”都能根据日期显示出来。为了例如:钥匙2015-11-10及其当天的活动和2015-11-9及其活动,我希望2015-11-9及其活动首先打印出来。我试过排序和元组等。。但这只会对密钥内部的内容进行排序,而不会对密钥本身进行排序。有什么想法或建议吗?你知道吗

>>> calendar = {}
    >>> command_add("2015-10-12", "Eye doctor", calendar)
    ''
    >>> command_add("2015-10-12", "lunch with sid", calendar)
    ''
    >>> command_add("2015-10-29", "Change oil in blue car", calendar)
    ''
    >>> command_add("2015-10-12", "dinner with Jane", calendar)
    ''
    >>> command_add("2015-10-29", "Fix tree near front walkway", calendar)
    ''
    >>> command_add("2015-10-29", "Get salad stuff", calendar)
    ''
    >>> command_add("2015-11-06", "Sid's birthday", calendar)
    ''
    >>> command_show(calendar)

我需要的是:

>>> command_show(calendar)
        2015-10-12:
            0: Eye doctor
            1: lunch with sid
            2: dinner with Jane
        2015-10-29:
            0: Change oil in blue car
            1: Fix tree near front walkway
            2: Get salad stuff
        2015-11-06:
            0: Sid's birthday
    ''

Tags: inadd字典排序格式with密钥change
1条回答
网友
1楼 · 发布于 2024-04-20 09:57:13

正常的dictionaries是无序的。如果你想要一个有序的字典,你必须使用^{}。你知道吗

但我想以有序的方式迭代这些值就足够了。通常,你是这样做的:

for key, value in sorted(mydict.items()):
    pass  # now it is sorted in ascending order of key

请注意,mydict仍然是无序的。.items()返回(key, value)元组的列表。列表可以排序。你知道吗

带列表元素的dict

#!/usr/bin/env python


def command_add(day, event_name, calendar):
    if day in calendar:
        calendar[day].append(event_name)
    else:
        calendar[day] = [event_name]


def command_show(calendar):
    """
    Parameters
         
    calendar : dict
        The keys are dates in the format YYYY-MM-DD and the values are lists
        of events
    """
    for day, events in sorted(calendar.items()):
        print("%s:" % day)
        for i, event in enumerate(events):
            print("\t%i: %s" % (i, event))


calendar = {}
command_add("2015-10-12", "Eye doctor", calendar)
command_add("2015-10-12", "lunch with sid", calendar)
command_add("2015-10-29", "Change oil in blue car", calendar)
command_add("2015-10-12", "dinner with Jane", calendar)
command_add("2015-10-29", "Fix tree near front walkway", calendar)
command_add("2015-10-29", "Get salad stuff", calendar)
command_add("2015-11-06", "Sid's birthday", calendar)
command_show(calendar)

相关问题 更多 >