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))
这是我的代码,我想使用videoid作为索引来创建列表。 videoid的真实数据是不同的字符串,如下所示:FYFSYJDHSJ
我收到此错误消息:
video_dict[videoid] = []
TypeError: list indices must be integers, not str
但是现在如何在这种情况下为不同的字符串添加1,2,3,4之类的标识符?
答案 0 :(得分:4)
答案 1 :(得分: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))
答案 2 :(得分:0)
如上所述,创建字典将是最理想的代码。 (虽然你应该避免调用它们dict
,因为这意味着对Python很重要。
您的代码可能与@aix上面已发布的内容类似:
for line in f.readlines():
d = dict(zip(("addr", "vlanid", "videoid", "reqs", "area"), tuple(line.split())))
您可以在代码中稍后使用字典d
执行某些操作。请记住 - 遍历此字典意味着,如果在循环完成之后不使用d
,则只能从文件中获取最后一个值。