我试图做一个for循环,以根据列表值获取字典的长度。我收到以下错误:
TypeError:类型为'NoneType'的对象没有len()
这是我的代码:
import random
ops_machine = {
'OP1' : {'W1':5, 'w3':6, 'w4':7, 'w5':9},
'OP2' : {'W11':61, 'w31':56, 'w41':76, 'w51':96},
'OP3' : {'W11':61, 'w31':56, 'w41':76, 'w51':96},
'OP4' : {'W11':61, 'w31':56, 'w41':76, 'w51':96},
}
lsta = ['OP1', 'OP3', 'OP4', 'OP5']
individual = [0.21280838, 0.6381886, 0.83189561, 0.37306277, 0.41580845, 0.32058659,
0.86574121, 0.11232781, 0.79238622, 0.81542997, 0.39082755, 0.20727362,
0.4521442 , 0.850183 , 0.76849343, 0.54011742, 0.27670335, 0.96537274,
0.04313256, 0.44680338]
for i in lsta:
for j in individual[3:7]:
b = j * (len(ops_machine.get(i))-1)
print(b)
有人可以帮我吗?
谢谢!
答案 0 :(得分:0)
当我是'OP3'时,'OP4'或'OP5'ops_machine.get(i)
给您None对象,并且由于len()
函数不能与None类型对象一起使用而导致错误。一种可能的解决方案是检查ops_machine.get(i)
的结果,如果结果为0,则将长度设置为零。
import random
ops_machine = {
'OP1' : {'W1':5, 'w3':6, 'w4':7, 'w5':9},
'OP2' : {'W11':61, 'w31':56, 'w41':76, 'w51':96},
}
lsta = ['OP1', 'OP3', 'OP4', 'OP5']
individual = [0.21280838, 0.6381886, 0.83189561, 0.37306277, 0.41580845, 0.32058659,
0.86574121, 0.11232781, 0.79238622, 0.81542997, 0.39082755, 0.20727362,
0.4521442 , 0.850183 , 0.76849343, 0.54011742, 0.27670335, 0.96537274,
0.04313256, 0.44680338]
for i in lsta:
for j in individual[3:7]:
values = ops_machine.get(i)
if values is not None:
values_len = len(values)
else:
values_len = 0
b = j * (values_len-1)
print(b)
如果值是None类型,则可以将b设置为-1
import random
ops_machine = {
'OP1' : {'W1':5, 'w3':6, 'w4':7, 'w5':9},
'OP2' : {'W11':61, 'w31':56, 'w41':76, 'w51':96},
}
lsta = ['OP1', 'OP3', 'OP4', 'OP5']
individual = [0.21280838, 0.6381886, 0.83189561, 0.37306277, 0.41580845, 0.32058659,
0.86574121, 0.11232781, 0.79238622, 0.81542997, 0.39082755, 0.20727362,
0.4521442 , 0.850183 , 0.76849343, 0.54011742, 0.27670335, 0.96537274,
0.04313256, 0.44680338]
for i in lsta:
for j in individual[3:7]:
values = ops_machine.get(i)
if values is not None:
values_len = len(values)
b = j * (values_len-1)
else:
b = -1
print(b)