def load_asn1_data(filename='songdata.csv'):
import csv
reader=csv.reader(open(filename,'r'))
songs=[]
for r in reader:
songs.append(r)
return songs
def fastest_year(songs):
for row in songs:
title = row[0]
artist = row[1]
year = int(row[2])
tempo = float(row[3])
artist_hotness=float(row[4])
duration = float(row[5])
key = int(row[6])
loudness = float(row[7])
mode = int(row[8])
for speed in tempo:
if tempo[speed]==max(tempo):
print year[speed]
songs=load_asn1_data(filename='songdata.csv')
fastest_year(songs)
Update:现在我知道第一个索引引用行,我创建了一个for循环,其中每个变量对应于一行中特定索引的值。如果我试着运行这个,我会得到一个新的错误,float object is not iterable。我以为max函数可能不适用于float,但我测试了它,它确实起作用了。我很困惑,因为我将上一个for循环解释为,对于“tempo类”中的所有元素,如果该索引处的速度最大,则打印与该速度相关的年份。在
songs
是一个列表列表,在fastest_year
函数中,您实际访问的是行,而不是列。您需要查看songs
中的每一行,以获得所需的值。比如:虽然不知道代码的具体用途,但我不能说这是否能完全符合您的目的。在
如果这是您收到的错误:
TypeError: int() argument must be a string or a number, not 'list'
那么你的}
songs[2]
可能是这样的[2010]
或{请通过打印}进行检查
songs[2]
或{请把它做成歌曲[2][0]
相关问题 更多 >
编程相关推荐