我想在列表中写一个数字,但这个数字来自一个变量。实际上,我正在阅读数据包,我正在收回IP地址。我的列表首先填充为0,当我得到一个IP地址时,我会将IP地址的结尾放在正确的情况下为1.并且我想计算列表中的1的数量。 例如(我不知道IP地址):
Mydico=[]
for i in range(len(Mydico)):
Mydico[i]=0
IP_address = '192.168.1.25'
nber=IP_address.split('.')[-1]# I got 25 in the variable nbre
Mydico[int(nber)]=1
print Mydico.count(1)
我收到以下错误: Mydico [int(nber)] = 1 IndexError:列表分配索引超出范围
编辑:我做了很多更改,因为我误认了字典和列表
答案 0 :(得分:1)
IP_adress是一个字符串,因为你可以在它上面使用split。但是,如果要索引列表,则必须提供一个数字。所以你需要将它转换为整数
List[int(nbre)]=1
通常使用名称List
(即使它比内置的list
更好)作为变量并不是一个好的做法。
修改强> 由于OP改变了他的帖子使得出现MyList,我将添加一些信息。
首先Mylist = {}
创建一个不是列表的字典。如果你想使用字典,你可以使用字符串作为键,而不是真的需要转换为int。如果您不知道什么是词典,我会让您阅读section 5.5
如果您需要初始化空列表,则必须执行Mylist = []
。如果要将项目添加到列表,则必须执行Mylist.append(foo)
。但是,如果您这样做,您将一次添加一个数字。
答案 1 :(得分:0)
不是100%肯定你想要实现的目标,但是:
IP_address = 192.168.1.25会出现语法错误。
.split('。')是一个在字符串上调用的函数。
所以应该是这样的:
IP_address = '192.168.1.25'
nbre=IP_address.split('.')[-1]
nbre
'25'
List是代码中的变量吗?
答案 2 :(得分:0)
在您的代码中
Mydico=[]
for i in range(len(Mydico)):
Mydico[i]=0
len(mydico)将为零。所以你的Mydico仍然是[]。
和
IP_address = '192.168.1.25'
nber=IP_address.split('.')[-1]# I got 25 in the variable nbre
Mydico[int(nber)]=1
int(nber)是25.你不能改变mydico [25],因为你没有那么长的列表。