簡體   English   中英

使用 Python 假期 package 根據假期名稱獲取假期日期

[英]Use Python Holidays package to get dates of holidays based on holiday names

我有這份假期清單

["New Year's Day",
 'Martin Luther King Jr. Day',
 'Memorial Day',
 'Independence Day',
 'Labor Day',
 'Thanksgiving',
 'Christmas Day',
 "New Year's Day (Observed)",
 'Martin Luther King Jr. Day (Observed)',
 'Memorial Day (Observed)',
 'Independence Day (Observed)',
 'Labor Day (Observed)',
 'Thanksgiving (Observed)',
 'Christmas Day (Observed)']

並希望將其轉換為字典,其中鍵是假期的日期,值是假期名稱。 我需要它是動態的,以便它可以返回任何一年的這些假期的日期。 我知道holiday庫允許您生成任何給定年份的假期日期和名稱,如下所示:

holidays_US = []
for name, date in holidays.US(years=2022).items():
    print(name, date)
2022-01-01 New Year's Day
2022-01-17 Martin Luther King Jr. Day
2022-02-21 Washington's Birthday
2022-05-30 Memorial Day
2022-06-19 Juneteenth National Independence Day
2022-06-20 Juneteenth National Independence Day (Observed)
2022-07-04 Independence Day
2022-09-05 Labor Day
2022-10-10 Columbus Day
2022-11-11 Veterans Day
2022-11-24 Thanksgiving
2022-12-25 Christmas Day
2022-12-26 Christmas Day (Observed)

但是我想通過將我的假期名稱列表作為輸入並輸出這些假期的日期來對這個過程進行逆向工程。

不確定是否要過濾特定年份,如果是,那么您可以試試這個:

import holidays
from datetime import date
us_holidays = holidays.US()

for d in holidays.US(years=2022).items():
    print(d)

    
(datetime.date(2022, 1, 1), "New Year's Day")
(datetime.date(2022, 1, 17), 'Martin Luther King Jr. Day')
(datetime.date(2022, 2, 21), "Washington's Birthday")
(datetime.date(2022, 5, 30), 'Memorial Day')
(datetime.date(2022, 6, 19), 'Juneteenth National Independence Day')
(datetime.date(2022, 6, 20), 'Juneteenth National Independence Day (Observed)')
(datetime.date(2022, 7, 4), 'Independence Day')
(datetime.date(2022, 9, 5), 'Labor Day')
(datetime.date(2022, 10, 10), 'Columbus Day')
(datetime.date(2022, 11, 11), 'Veterans Day')
(datetime.date(2022, 11, 24), 'Thanksgiving')
(datetime.date(2022, 12, 25), 'Christmas Day')
(datetime.date(2022, 12, 26), 'Christmas Day (Observed)')

# you can easily pick up your preferred/interested dates from this dictionary...

要使用您的列表過濾假期,您可以使用以下示例:

import holidays

YEAR = 2022

my_list = [
    "New Year's Day",
    "Martin Luther King Jr. Day",
    "Memorial Day",
    "Independence Day",
    "Labor Day",
    "Thanksgiving",
    "Christmas Day",
    "New Year's Day (Observed)",
    "Martin Luther King Jr. Day (Observed)",
    "Memorial Day (Observed)",
    "Independence Day (Observed)",
    "Labor Day (Observed)",
    "Thanksgiving (Observed)",
    "Christmas Day (Observed)",
]

# to speed up the search
my_set = set(my_list)

filtered_holidays = {
    k: v for k, v in holidays.US(years=YEAR).items() if v in my_set
}

print(filtered_holidays)

印刷:

{
    datetime.date(2022, 1, 1): "New Year's Day",
    datetime.date(2022, 1, 17): "Martin Luther King Jr. Day",
    datetime.date(2022, 5, 30): "Memorial Day",
    datetime.date(2022, 7, 4): "Independence Day",
    datetime.date(2022, 9, 5): "Labor Day",
    datetime.date(2022, 11, 24): "Thanksgiving",
    datetime.date(2022, 12, 25): "Christmas Day",
    datetime.date(2022, 12, 26): "Christmas Day (Observed)",
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM