You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速创建多键对应同一值的Python字典?

非闰年月份天数字典的简洁创建方法

你想要创建的非闰年月份天数字典,确实可以通过避免重复输入相同值来实现——你之前尝试的写法不合法,是因为Python会把{1,3,5,...}这种逗号分隔元素的结构识别为集合,集合不支持键值对的冒号语法,所以报错。

以下是几种简洁的实现方式:

方法一:合并dict.fromkeys生成的字典

这是你提到的思路,用dict.fromkeys批量生成相同值的键值对,再通过字典解包(**)合并:

nonleap_year = {
    **dict.fromkeys([1, 3, 5, 7, 8, 10, 12], 31),
    **dict.fromkeys([4, 6, 9, 11], 30),
    2: 28
}

方法二:字典推导式(更易维护)

把月份按天数分组,用推导式遍历生成键值对,结构清晰,后续修改分组也方便:

# 先定义月份分组和对应天数
month_day_groups = [
    ([1, 3, 5, 7, 8, 10, 12], 31),
    ([4, 6, 9, 11], 30),
    ([2], 28)
]
# 推导式生成字典
nonleap_year = {month: days for group, days in month_day_groups for month in group}

方法三:紧凑版推导式(一行实现)

如果追求代码紧凑,可以把分组直接写在推导式里:

nonleap_year = {m: d for groups in [([1,3,5,7,8,10,12],31), ([4,6,9,11],30), ([2],28)] for m in groups[0] for d in [groups[1]]}

其中方法一和方法二是最常用的,兼顾简洁性和可读性。

内容的提问来源于stack exchange,提问作者Lei xy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:51:01