我有一个类,它有一个空的字典属性:
class Library:
def __init__(self,library):
self.library={}
def addSong(self,title,artist,genre,playCount):
for i in self.library.keys():
if i == title:
x=self.library.get(title)
x[2]= x[2]+1
else:
self.library[title]=[artist,genre,playCount]
def song2String(self,title):
x=self.library.get(title)
return f"{x[0]} {title} ({x[1]}), {x[2]}" 当我这么做的时候:
m1= Library({})
m1.addSong("Saturday Night's Alright for Fighting","Elton John","Rock",22)代码正常运行,项被添加到m1字典中。但当我打字时:
print(m1.song2String("Saturday Night's Alright for Fighting"))我收到以下错误消息:
return f"str{x[0]} str{title} (str{x[1]}), str{x[2]}"
TypeError: 'NoneType' object is not subscriptable我的语法错误是什么?
发布于 2021-12-09 19:28:27
,我想这是你所期望的。在这里的加载项函数中,我首先检查的是字典中可用的任何键。如果是真的,那就迭代,做你想做的事。否则,将第一个字典项添加到字典中。在songs2string方法中,首先要识别字典是如何工作的。在这种情况下,键是字符串,值是字典中的列表。所以你可以用字典返回你想要的东西。
class Library:
def __init__(self,library=dict()):
self.library=library
def addSong(self,title,artist,genre,playCount):
if len(self.library.keys())>0:
for i in self.library.keys():
if i == title:
x=self.library.get(title)
x[2]= x[2]+1
else:
self.library[title]=[artist,genre,playCount]
# print(self.library)
def song2String(self,title):
x=self.library
print(x)
return x[title][0], x[title][1], x[title][2]
m1= Library()
m1.addSong("Saturday Night's Alright for Fighting","Elton John","Rock",22)
print(m1.song2String("Saturday Night's Alright for Fighting"))https://stackoverflow.com/questions/70295196
复制相似问题