2013-04-02 124 views
0

請注意,使用Python 2.4。這裏是一個字典,我叫d_ourbook:將字典中的浮點值轉換爲兩位小數

{'130405C00465000': [[8.6999999999999993, 8.9000000000000004, 0.50749999999999995, 32.810000000000002, -141.1575]]} 

該值是一個浮動列表。我試圖做一個函數,顯示相同的字典,但值限於兩個浮點。

我做了一個浮點 - 叫了兩個(floatnum)> 2decimal字符串函數:

def two(floatnum): 
    return '%.2f' %(floatnum) 

我的功能循環或通過字典壓縮和所有的值轉換爲兩(價值)一直是噩夢和返回浮動參數要求:

Traceback (most recent call last): 
    File "esecombo.py", line 496, in ? 
    print ' -- dt: ', dt(d_ourbook) 
    File "esecombo.py", line 23, in dt 
    new_d_name = dict(zip(d_name.keys(), [two(value)for value in d_name.values()])) 
    File "esecombo.py", line 10, in two 
    return '%.2f' %(floatnum) 
TypeError: float argument required 

任何幫助將是一個救生員。

回答

0

假設d_name是您提供的字典,那麼d_name.values()是列表的浮動列表。所以value是浮動列表的清單,你不能把它交給two()而沒有錯誤。

即使你得到這個解決方案,zip會根據最短的參數返回一些元組。 這樣:

new_d_name = dict(zip(d_name.keys(), 
         [two(value) for value in (d_name.values()[0][0])])) 

結果{'130405C00465000': '8.70'}

這假定所有值在列表類型的單個項目列表中的例子,在這種情況下,你可能可以使用:

new_d_name = dict(zip(d_name.keys(), 
         [[two(value) for value in (d_name.values()[0][0])]])) 

獲得:

{'130405C00465000': ['8.70', '8.90', '0.51', '32.81', '-141.16']} 
相關問題