列表推导return:TypeError:字符串索引必须为整数

时间:2019-02-10 19:32:45

标签: python python-3.x

仅提供我正在尝试做的事情的上下文。 数据集来自data.world/notgibs 我创建了一个名为专辑的新列表,并尝试使用列表理解来获取1974年发行的专辑数量。这是我的代码:

with open ('/Users/Weindependent/Desktop/dataset/albumlist.csv', encoding='cp1252') as case0:
    reader = csv.DictReader(case0) #the file is coded with single-byte coding
    album = []
    for row in reader:
        album.append(row)
print (len(album))

我正在创建一个名为album_1974的新列表 对于我的专辑列表中“年份”为1974的每个专辑(行),请追加到名为album_1974的新列表中

album_1974 = [row for row in album if row["Year"]=='1974'] 
print ("Number of albums released in 1974:", len(album_1974))

错误是:TypeError:字符串索引必须是整数

尝试: 我发现year列中有一些非整数值,所以我继续定义is_valid_year:

def is_valid_year(string):
    try:
        year = int(string)
    except:
        return TypeError
    else:
        return year

并将其放回到我以前的脚本中:

album_1974 = [row for row in album if is_valid_year(row["Year"]=="1974")] #this is list comprehension 
print ("No of album in 1974 released:",len(album_1974))

错误仍然存​​在

然后,我尝试使用排序功能按年份对列表中的相册进行排序,发生相同的错误: 我的代码:

album_sort = sorted(album,lambda = x : s["Artist"]
print (Album_sort)

相同错误:TypeError:字符串索引必须为整数

有人可以帮忙吗?

0 个答案:

没有答案