为什么Python认为我的字典是一个列表?尝试更改值时出现类型错误

为什么Python认为我的字典是一个列表?尝试更改值时出现类型错误,python,dictionary,typeerror,Python,Dictionary,Typeerror,所以我有一个小脚本,可以将歌曲添加到Rdio播放列表中。它基本上工作正常。首先,它读取一个CSV并创建一个字典列表,每个字典都包含曲目的属性。下面是实现这一点的代码: csv_tracks = [] f = open('./testing_tracks.csv', 'rb') reader = csv.reader(f) for row in reader: csv_tracks.append({'artist':row[1], 'title':row[0], 'status':row[

所以我有一个小脚本,可以将歌曲添加到Rdio播放列表中。它基本上工作正常。首先,它读取一个CSV并创建一个字典列表,每个字典都包含曲目的属性。下面是实现这一点的代码:

csv_tracks = []
f = open('./testing_tracks.csv', 'rb')
reader = csv.reader(f)
for row in reader:
    csv_tracks.append({'artist':row[1], 'title':row[0], 'status':row[2]})
f.close
“status”值是一个0或1的字符串,只是用来表示该曲目是否已添加到播放列表中(因此我不会不断重复添加同一曲目)

这个问题稍后会出现在脚本中,我在脚本中运行一个循环来搜索Rdio上的每个曲目,如果找到了,将其添加到播放列表中。代码如下:

for track in csv_tracks:
    if track['status'] == '0':
        if find_track(track) != None:
            key = find_track(track)
            add_to_playlist(key)
            track['status'] = '1'
            print 'Adding %s by %s to the playlist' % (track['title'],track['artist'])
我有打字错误。以下是信息:

Traceback (most recent call last):
  File "testing.py", line 76, in <module>
    if track['status'] == '0':
TypeError: list indices must be integers, not str
回溯(最近一次呼叫最后一次):
文件“testing.py”,第76行,在
如果曲目['status']='0':
TypeError:列表索引必须是整数,而不是str
真正奇怪的是,这个脚本似乎工作得很好。对于状态为“0”的曲目,它将搜索它们并将它们添加到播放列表中,然后按照上面的说明记录一条消息(“将…添加到播放列表”)。唯一不起作用的是,添加曲目时,曲目['status']不会更改为'1'。我得到了错误

我真的不明白为什么Python似乎认为我的字典是一个列表,只能接受整数索引。有什么帮助吗


免责声明:我是初学者。如果我正在做一些非常愚蠢的事情,请温柔一点:)

您想使用
csv.DictReader
它允许您按名称访问元素。默认的
csv.reader
将每个记录作为列表返回。

检查中间的代码。您省略的任何行是否使用名称
csv\u track
?添加一个
打印(csv\u tracks)
,看看它是什么。这与您的问题无关,但要关闭文件,您需要调用
f.close()
@TimPietzcker,或者更好,使用。我打赌您无意中在某个地方添加了一个列表到csv\u tracks。在迭代到达这个列表之前,程序“大部分工作”。