如何在Python中使用字符串作为列表的索引

0 投票
3 回答
1475 浏览
提问于 2025-04-17 08:47
     for line in f.readlines():
     (addr, vlanid, videoid, reqs, area) = line.split()

     if vlanid not in dict:
          dict[vlanid] = []

     video_dict = dict[vlanid]

     if videoid not in video_dict:
         video_dict[videoid] = []

     video_dict[videoid].append((addr, vlanid, videoid, reqs, area))

这是我的代码,我想用视频的ID作为索引来创建一个列表。视频ID的真实数据是一些不同的字符串,比如:FYFSYJDHSJ

我收到了这个错误信息:

video_dict[videoid] = []
TypeError: list indices must be integers, not str

那么现在我该如何为这些不同的字符串添加像1、2、3、4这样的标识呢?

3 个回答

0

如上所述,创建字典是实现代码的最佳选择。(不过,最好不要把它们叫做 dict,因为这个词在Python中有特别的含义。)

你的代码可能看起来像 @aix 之前发的那样:

for line in f.readlines():
    d = dict(zip(("addr", "vlanid", "videoid", "reqs", "area"), tuple(line.split())))

你可以在代码的后面使用字典 d 来做一些事情。记住一点——如果你在循环结束后才使用这个字典 d,那么你只能得到文件中的最后一个值。

4

用字典代替列表:

if vlanid not in dict:
    dict[vlanid] = {}

另外,我建议你把dict叫个其他名字,这样就不会和内置的dict冲突了。

2

不要把 dict 当作变量名来用。可以试试用 d 来代替 dict

d = {}
for line in f.readlines():
    (addr, vlanid, videoid, reqs, area) = line.split()
    video_dict = d.setdefault(vlanid, {})
    video_dict.setdefault(videoid, []).append((addr, vlanid, videoid, reqs, area))

撰写回答