Python随机更改数据类型

2024-04-20 07:48:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我的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。你知道吗

我对一个解决方法不感兴趣(我知道我可以测试类型并用它来完成),我只是觉得这很有趣,我想了解这个问题。你知道吗


Tags: key代码infor错误nperrorkeys
1条回答
网友
1楼 · 发布于 2024-04-20 07:48:51

F1Test[key]从dict中获取每个值,然后使用float(F1Test[key])强制转换为float,字典中有一个字符串"error",您尝试将其强制转换为float,显然它会出错。除非使用try/except或其他方法捕获无法转换为浮点的输入,否则无法让代码无错误地运行。你知道吗

另一方面,所有的值条"error"都已经是浮动的,所以强制转换是多余的,您也不需要调用.keys来迭代dict键,for key in dict就足够了,如果您只是想让值使用dict.values()。你知道吗

相关问题 更多 >