对于文件:
Year Grade
2000 100
2002 95
2001 88
2012 99
2000 66
依此类推,我创建了一个函数来计算下一年的平均成绩。但是,我发现,直到最后我没有得到列表,而是不断得到一个元组。
我必须得到一个列表而不是元组才能通过断言测试。
years, average_grades = [],[]
d = {}
with open(file,'r') as f:
next(f)
for line in f:
year, grade = (s.strip() for s in line.split(','))
if year in d:
d[year][0] += int(grade)
d[year][1] += 1
else:
d[year] = [int(grade),1]
for year, grades in d.items():
years.append(int(year))
average_grades.append(float(grades[0]) / grades[1])
years, average_grades = zip(*sorted(zip(years, average_grades), key= lambda p: p[0]))
return years, average_grades
这个功能实际上给了我
年级
2000、83
2001,88
2002,95
2012,99
与此类似。它给了我每年的平均值。但是,它应该是有序的(根据年份),所以我已经完成了最后一步。
应该通过这个:
years_answer = [i + 2000,范围为(0,5)]
assert_equal(years,years_answer)
我得到的错误:
AssertionError: (2000, 2001, 2002, 2003, 2004, 2005, 2006[62 chars]2017) != [2000, 2001, 2002, 2003, 2004, 2005, 2006[62 chars]2017]
有解决此类问题的建议吗?
最佳答案
选择以下选项之一:
1. return list(years),list(average_grades)
代替return years, average_grades
2.使用assert_equal(list(years), years_answer)
3.使用assert_equal(years, tuple(years_answer))
4.使用years_answer = (i+2000 for i in range(0,5))
另外,我不理解您的声明This function actually gives me: Year, Grade 2000, 83 2001, 88 2002, 95 2012, 99
。根据代码,OP函数中的错误实际上为您提供year=(2000,2001,2002...)
和average_grades=(83,88,95...)
让我们来了解
years, average_grades = zip(*sorted(zip(years, average_grades), key= lambda p: p[0]))
首先让我们看看什么是does邮编。让我们将以上陈述分为几个较小的步骤...
years=[2001,2000,2002...]
average_grades=[88,83,95...]
it=zip(years, average_grades)
it
的末尾是元组上的迭代器。 list(it)=[(2001,88), (2000,83),(2002,95)...] #State of variable
整理后..
st=sorted(it, key= lambda p: p[0]) #sorted returns a list
st=[(2000,83), (2001,88), (2002,95)...] #State of variable
现在重新压缩元组。
ft=zip(*st) #Note that zip takes only multiple arguments thus we need to splay the list using *
list(ft)=[(2000,2001,2002...),(83,88,95...)] #State of variable
现在终于当你做...
years,average_grades=ft
years=(2000,2001,2002...) #State of variable
average_grades=(83,88,95...) #State of variable
此时,
years
和average_grades
是元组而不是列表。关于python - 元组列出问题:找不到我犯错的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46774991/