2017-10-07 99 views
1

bit卡住了可能很容易解決的問題,但是我發現的所有示例都在討論統一密鑰:值對。將浮點數轉換爲int類型混合數據類型dictionairy

我想達到的目標是:

我有一個包含混合值(字符串和浮點)的字典,以及所有的浮點應該轉換爲int,否則字符串被保留。

例如:

d = {"key1":"something","key2":200.0, "key3":"another string", "key4":2017.0} 

應該變成:

{"key1":"something","key2":200, "key3":"another string", "key4":2017} 

我想是這樣的一些變化,但沒有運氣

d = {k: int(v) if float(v) else v for k, v in d.items()} 

什麼是實現這一目標的最佳途徑?

回答

3

if float(v)不檢查v是否是浮動:只檢查是否轉換v爲float的結果感實性是True。但是,如果float(v)引發例外,則例外情況是而非

可以使用isinstance(..)檢查的對象具有某種類型:

{k: int(v) if isinstance(v, float) else v for k, v in d.items()}

將產生一個字典,如:

>>> {k: int(v) if isinstance(v, float) else v for k, v in d.items()} 
{'key2': 200, 'key4': 2017, 'key1': 'something', 'key3': 'another string'} 
相關問題