首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:'list‘对象没有'title’属性。我的代码不工作,当我将它与答案进行比较时,它是相同的吗?

AttributeError:'list‘对象没有'title’属性。我的代码不工作,当我将它与答案进行比较时,它是相同的吗?
EN

Stack Overflow用户
提问于 2020-05-25 03:32:58
回答 3查看 319关注 0票数 1

我正在做埃里克·马特写的Python速成教程,我正在做练习6-9,叫做“最喜欢的地方”。当我尝试这段代码时,我得到了这个错误列表:‘AttributeError’对象没有'title‘属性

代码语言:javascript
复制
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': 'hong kong',
}

for name, place in favourite_places.items():
print(name.title() + "'s favourite places are " + place.title())

但我将它与本练习的答案代码进行了比较,我不知道我做错了什么。这是答案中的代码,

代码语言:javascript
复制
favorite_places = {
'eric': ['bear mountain', 'death valley', 'tierra del fuego'],
'erin': ['hawaii', 'iceland'],
'ever': ['mt. verstovia', 'the playground', 'south carolina']
}

for name, places in favorite_places.items():
print("\n" + name.title() + " likes the following places:")
for place in places:
    print("- " + place.title())

在答案中,他放入了place.title(),它没有得到错误,但当我这样做时,它得到了错误。如果你能帮上忙,谢谢

EN

回答 3

Stack Overflow用户

发布于 2020-05-25 03:48:40

你的问题在这里,因为你错过了这个:

代码语言:javascript
复制
for place in places:
    print("- " + place.title())

placeslistlist中的placestrtitle()属性仅适用于str。所以当你这样做的时候:

代码语言:javascript
复制
for name, place in favourite_places.items():
print(name.title() + "'s favourite places are " + place.title())

您需要遍历place,以便在其中的str上调用title()

如下所示:

代码语言:javascript
复制
for name, place in favourite_places.items():
    print(name.title() + "'s favourite places are ")
    for p in place:
       print(p.title())

您还需要使james value成为一个1元素列表才能正常工作:

代码语言:javascript
复制
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': ['hong kong'],
}

最后,确保你是小心的缩进。我假设您在代码中正确地缩进了它,并且只是错误地将它复制到堆栈中,但是您的print语句需要缩进,以便它出现在循环中。

票数 0
EN

Stack Overflow用户

发布于 2020-05-25 03:48:44

你可以试试

代码语言:javascript
复制
favourite_places = {
'mum': ['hong kong', 'orkney'],
'dad': ['slovenia', 'the alps', 'scotland highlands'],
'james': 'hong kong',
}

for name, place in favourite_places.items():
    print(name.title() + "'s favourite places are \n-{}\n".format( "\n-".join([i.title() for i in place]) if isinstance(place, list) else place.title() + "\n"))

问题是“妈妈”和“爸爸”是list和list没有标题,所以你需要遍历它们的每一项并调用title方法。

票数 0
EN

Stack Overflow用户

发布于 2020-05-25 03:49:50

两个主要问题:

  1. 在您的代码中,字典值在teo项目中为list类型,在第三个项目中为str类型。这使得不可能以同样的方式对待它们。
  2. 在您的代码中,您不会遍历字典值中的所有项。

"hong kong"值固定为列表(只有一个元素),并在代码中包含两个嵌套循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61991390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档