我想我的python安裝中有一個bug。下面的代碼: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。
我對解決方法不感興趣(我知道我可以測試類型並完成它),我只是覺得這很有趣,我期待着理解這個問題。
它看起來像是試圖將BassTrombone的'錯誤'轉換爲浮動和失敗。 – Ryan
是錯誤等於'錯誤'的'F1Test [key]'的值嗎? – dm03514
你是對的。在較大的代碼中,F1Test會在每個循環中重新初始化,並且偶爾會發生錯誤。我的眼睛沒有抓住繩子。我猜是時候散步了。謝謝! –