2013-04-02 160 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']} 
相关问题