我有两个<Suits>
和<Breaking_Bad>
定义的字典,它们具有相同的键。
Suits = {'name': 'Suits', 'seasons': 8, 'status': 'Ongoing'}
Breaking_Bad = {'name': 'Breaking Bad', 'seasons': 5, 'status': 'Completed'}
我被要求写一个名为high_seasons
(tv_show
,seasons
)的函数参数,该函数参数将tv_show
作为第一个参数,并将季节(表示为数字)作为第二个参数,如果给定的tv_show
季节大于或等于提供的季节,则返回True,否则返回False
。
这是我的代码:
def high_seasons (tv_show, seasons):
tv_show.keys() == seasons.keys()
if tv_show ['seasons'] >= seasons ['seasons']:
return True
else:
return False
high_seasons(Suits, 7) ## Expected result True
high_seasons(Breaking_Bad, 7) ## Expected result False
我收到以下错误:
AttributeError: 'int' object has no attribute 'keys'
答案 0 :(得分:2)
您需要确定函数首先接受的对象类型。根据您的描述,我认为您想设计功能签名,例如:
def high_seasons(tv_show: dict, seasons: int):
pass
但是,在逻辑代码块中,您尝试调用seasons.keys()
。这是引发上面错误的部分。就像说的那样,一个int对象没有keys属性。因此,要实现上述签名,您的代码应类似于:
def high_seasons (tv_show, seasons):
if tv_show['seasons'] >= seasons:
return True
else:
return False
修改 更新为使用语法正确的方法来显式声明变量类型。致谢@Luna。
答案 1 :(得分:2)
def high_seasons(tv_show: dict, seasons: int) -> bool:
return int(tv_show.get('seasons')) >= seasons
您能解决您的问题吗?