首页 > 解决方案 > 列表理解返回:TypeError:字符串索引必须是整数

问题描述

只是为了给出我正在尝试做的事情的背景。数据集来自 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:字符串索引必须是整数

有人可以帮忙吗?

标签: pythonpython-3.x

解决方案


推荐阅读