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

如何通过用户生日月份输入从导入模块的字典中获取对应键值对

问题描述

我想利用之前收集的用户生日月份输入,从自定义模块的字典里匹配对应的月份与名人键值对并打印到屏幕,但编写代码时遇到了多种错误,比如使用.items()方法时出现ValueError、'function'属性未定义等问题。以下是我编写的代码,请求语法和程序执行方面的帮助:

模块代码(module25)

def famousbirthdays (birthdayMonth):
    return {"January" : "Mozart", "February" : "Charles Darwin", "March" : "Albert Einstein", "April" : "Elizabeth II", "May" : "Linnaeus", "June" : "Josephine Baker", "July" : "Frida Kahlo", "August" : "Barak Obama", "September" : "Beyonce Knowles", "October" : "Gandhi", "November" : "Marie Curie", "December" : "Emily Dickenson"}

主程序代码

#import function from module

from module25 import famousbirthdays

#change variable name of previous user input, collected from multiply function (module25), extracting just the month

birthdayMonth = birthdayObject.strftime("%m")

#use items() method and search for birthdayMonth in dictionary

for k, v in famousbirthdays.items():
    if str(birthdayMonth) in famousbirthdays.items(birthdayMonth):
        print("Your birthday months is the same as", famousbirthdays.month(birthdayMonth).person(birthdayMonth))

修正方案

第一步:修复模块代码

原函数的参数完全多余,直接返回字典即可:

# module25.py
def get_famous_birthdays():
    return {
        "January": "Mozart",
        "February": "Charles Darwin",
        "March": "Albert Einstein",
        "April": "Elizabeth II",
        "May": "Linnaeus",
        "June": "Josephine Baker",
        "July": "Frida Kahlo",
        "August": "Barak Obama",
        "September": "Beyonce Knowles",
        "October": "Gandhi",
        "November": "Marie Curie",
        "December": "Emily Dickenson"
    }

第二步:修复主程序代码

需要把数字月份转换成英文月份名,再从字典中匹配:

from module25 import get_famous_birthdays
# 假设birthdayObject是已有的datetime对象,若没有可自行创建测试
from datetime import datetime

# 测试用例:替换成实际的用户生日对象
# birthdayObject = datetime(2000, 5, 15)

# 将数字月份转换为英文全名(如"May")
birthdayMonth = birthdayObject.strftime("%B")

# 获取名人字典
famous_dict = get_famous_birthdays()

# 匹配并输出结果
if birthdayMonth in famous_dict:
    print(f"你的生日月份和{famous_dict[birthdayMonth]}相同!")
else:
    print("暂无该月份对应的名人信息")

错误原因说明

  • 函数与字典混淆:原代码直接对famousbirthdays函数调用.items(),但它是函数,必须先执行(加())才能得到返回的字典。
  • 月份格式不匹配:strftime("%m")返回两位数字(如"01"),但字典的键是英文月份名,需要用%B获取全名。
  • 无效属性调用:famousbirthdays.month(...)写法错误,函数没有这类自定义属性,应直接操作返回的字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:00:14