繁体   English   中英

Python随机更改数据类型

[英]Python randomly changing data Types

我认为我的python安装中存在错误。 如下代码:

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

F1Test具有以下值:

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次它将从字典中读取值作为字符串而不是浮点数。 我正在使用ipython 1.2.1,python 2.7.6和Ubuntu 14.04。

我对变通办法不感兴趣(我知道我可以测试类型并使用它来完成),我只是觉得这很有趣,并且希望了解这个问题。

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

另一个需要注意的是,所有值栏"error"已经浮动,因此强制转换是多余的,您也不需要调用.keys来遍历dict键, for key in dict dict中的键就足够了,即使您只想使用值dict.values()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM