如何仅用两个字典的值创建新字典及实现月份首尾日期元组输出
实现循环输出月份首尾日的方案
你可以新增一个存储「月份数字-当月天数」的映射字典,配合你现有的月份字典即可实现需求,平年场景下的实现代码如下:
# 你原有的月份缩写映射字典 month_abbr_map = { "jan": 1, "fev": 2, "mar": 3, "abr": 4, "mai": 5, "jun": 6, "jul": 7, "ago": 8, "set": 9, "out": 10, "nov": 11, "dez": 12 } # 新增月份天数映射字典(平年2月按28天计算,需要支持闰年可自行添加判断逻辑) month_days_map = { 1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31 } # 循环输出结果 for month_num in month_abbr_map.values(): first_day_item = (month_num, 1) last_day_item = (month_num, month_days_map[month_num]) print(f"{first_day_item} {last_day_item}")
运行后输出的内容和你要求的格式完全一致。
用两个字典的值创建新字典的方法
可以用字典推导式实现,举个例子:假设你有两个字典dict_a和dict_b,二者有相同的键,你想把相同键对应的值组合起来作为新字典的值,实现代码如下:
dict_a = {"a":1, "b":2, "c":3} dict_b = {"a":10, "b":20, "c":30} # 生成新字典:新值为两个字典对应值的元组 new_dict = {key: (dict_a[key], dict_b[key]) for key in dict_a if key in dict_b} # 输出结果为 {'a': (1, 10), 'b': (2, 20), 'c': (3, 30)} print(new_dict)
如果你的两个字典键不同,或者需要自定义值的组合逻辑,只需要修改推导式里的键匹配规则和值的生成逻辑即可。
内容的提问来源于stack exchange,提问作者Gabriel Salvador
相关产品推荐
相关产品推荐

