我有一個問題,真的讓我發瘋。通常做int(20.0)
會導致20
。到現在爲止還挺好。但是:python浮點數到int轉換
levels = [int(gex_dict[i]) for i in sorted(gex_dict.keys())]
而gex_dict[i]
返回浮動,例如, 20.0
,其結果是:
"invalid literal for int() with base 10: '20.0'"
我只是一個步驟就可以大嚼的最後一塊我的鍵盤。
我有一個問題,真的讓我發瘋。通常做int(20.0)
會導致20
。到現在爲止還挺好。但是:python浮點數到int轉換
levels = [int(gex_dict[i]) for i in sorted(gex_dict.keys())]
而gex_dict[i]
返回浮動,例如, 20.0
,其結果是:
"invalid literal for int() with base 10: '20.0'"
我只是一個步驟就可以大嚼的最後一塊我的鍵盤。
'20.0'
是一個字符串,而不是float
;您可以通過錯誤消息中的單引號來判斷。你可以先用float
解析它,然後用int
截斷它得到int
出來的:
>>> int(float('20.0'))
20
(雖然也許你會想儲存漂浮,而不是在你的字典字符串,因爲那是你似乎期待。)
+1,用於建議從源頭解決問題。 – Junuxx
嘿,非常感謝你!!!(那很快!!!) – langohrschnauze
它看起來像值是一個字符串,而不是浮動。因此,你需要int(float(gex_dict[i]))
的問題是,你有一個字符串,而不是浮動,認爲這是比較:
>>> int(20.0)
20
>>> int('20.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '20.0'
可以通過先轉換爲浮動解決此問題,然後爲int:
>>> int(float('20.0'))
20
因此,這將是你的情況:
levels = [int(float(gex_dict[i])) for i in sorted(gex_dict.keys())]
它升ooks喜歡這個問題,gex_dict[i]
實際上會返回浮點數'20.0'
的字符串表示形式。儘管int()可以從float轉換爲int,並且可以將整數的字符串表示形式轉換爲int。它沒有能力從float的字符串表示形式轉換爲int。
爲INT的文檔可以在這裏找到: http://docs.python.org/library/functions.html#int
您可以發佈在'gex_dict'你的內容類型。我認爲你有看起來像浮游物而不是浮游物的字符串。 – jamylak
嗨Jamylak,你是對的,那些是字符串而不是浮動,謝謝! – langohrschnauze