我想我的python安装中有一个bug。以下代码:
i = 0
while i < 100:
for key in F1Test.keys():
mTest = np.append(mTest, float(F1Test[key]))
i = i+1
将在崩溃前随机运行多次,出现以下错误:
ValueError: could not convert string to float: error
F1测试具有以下值:
In [123]: F1Test
Out[123]:
{'AltoFlute': 0.75,
'AltoSax': 1.0,
'Bass': 0.9111111111111111,
'BassClarinet': 0.8,
'BassFlute': 0.8695652173913043,
'BassTrombone': 'error',
'Bassoon': 0.7692307692307692,
'BbClarinet': 0.9230769230769231,
'Cello': 0.8695652173913043,
'EbClarinet': 0.9411764705882353,
'Flute': 0.8695652173913044,
'Guitar': 1.0,
'Horn': 1.0,
'Oboe': 0.8750000000000001,
'Piano': 0.993103448275862,
'SopSax': 0.9230769230769231,
'TenorTrombone': 0.923076923076923,
'Trumpet': 1.0,
'Tuba': 0.888888888888889,
'Viola': 0.8735632183908046,
'Violin': 0.8974358974358975}
我在一个更大的代码中找到了它,并把它简化成这种形式。显然,每50次它都会将字典中的值作为字符串而不是浮点数读取一次。我正在使用ipython1.2.1、python2.7.6和ubuntu14.04。你知道吗
我对一个解决方法不感兴趣(我知道我可以测试类型并用它来完成),我只是觉得这很有趣,我想了解这个问题。你知道吗
F1Test[key]
从dict中获取每个值,然后使用float(F1Test[key])
强制转换为float,字典中有一个字符串"error"
,您尝试将其强制转换为float,显然它会出错。除非使用try/except
或其他方法捕获无法转换为浮点的输入,否则无法让代码无错误地运行。你知道吗另一方面,所有的值条
"error"
都已经是浮动的,所以强制转换是多余的,您也不需要调用.keys
来迭代dict键,for key in dict
就足够了,如果您只是想让值使用dict.values()
。你知道吗相关问题 更多 >
编程相关推荐