Python Str对象没有属性引用
我正在开发一个程序,该程序获取姓名列表并返回前20个姓名,而不考虑性别 我很难理解我做错了什么,因为我试图使用插入排序,但它不起作用 这是代码Python Str对象没有属性引用,python,readfile,insertion-sort,Python,Readfile,Insertion Sort,我正在开发一个程序,该程序获取姓名列表并返回前20个姓名,而不考虑性别 我很难理解我做错了什么,因为我试图使用插入排序,但它不起作用 这是代码 class babyName(): __slots__ = ("name" , "gender" , "occurrences") def __init__(self, name, gender, occurrences): self.name = name
class babyName():
__slots__ = ("name" , "gender" , "occurrences")
def __init__(self, name, gender, occurrences):
self.name = name
self.gender = gender
self.occurrences = occurrences
def __str__(self):
return self.name + "," + self.gender + "," + self.occurrences
def mkEntry(name, gender, occurrences):
entry = babyName(name, gender, occurrences)
return entry
def readFile(year):
lst = []
lst2 = []
topm = 20
topf = 20
yob = ("yob" + str(year) + ".txt")
for line in open("names/" + yob ):
line = line.split(",")
if line[1] == "F":
if topf > 0:
entry = mkEntry(line[0], line[1], line[2])
lst.append(entry)
topf -= 1
elif line[1] == "M":
if topm > 0:
entry = mkEntry(line[0], line[1], line[2])
lst2.append(entry)
topm -= 1
mergedlist = lst + lst2
return mergedlist
def insertion_sort(lst):
for i in range(1, len(lst)):
h = i - 1
val = lst[i].occurrences
val2 = lst[i-1].occurrences
while (h >= 0) and (val2 > val):
lst[h+1] = lst[h]
h = h - 1
lst[h+1] = val
def main():
year = input("Enter the year of birth:")
file = readFile(year)
insertion_sort(file)
for x in file:
print(x)
main()
怎么了
lst[h+1] = val # val isn't a babyName instance
应该是
lst[h+1] = lst[i]
嗯。移动/插入的东西不应该有占位符吗
def insertion_sort(lst):
for i in range(1, len(lst)):
# placeholder for the item being moved
tmp = lst[i]
h = i - 1
val = lst[i].occurrences
val2 = lst[i-1].occurrences
while (h >= 0) and (val2 > val):
lst[h+1] = lst[h]
h = h - 1
lst[h+1] = tmp
您可能想看看本文中的伪代码。太好了,使其实际运行,但现在它不断返回一个具有相同值的列表。。。。