注意,使用Python 2.4。这是我称之为d_ourbook的词典:
{'130405C00465000': [[8.6999999999999993, 8.9000000000000004, 0.50749999999999995, 32.810000000000002, -141.1575]]}
该值是浮点数列表。我正在尝试创建一个显示相同字典的函数,但值限制为两个浮点。
我做了一个浮点 - > 2decimal字符串函数称为二(floatnum):
def two(floatnum):
return '%.2f' %(floatnum)
我循环或压缩字典并将所有值转换为两个(值)的函数一直是一场噩梦,并返回所需的float参数:
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 :(得分:0)
假设d_name
是您提供的字典,则d_name.values()
是浮点列表的列表。因此,值是浮动列表的列表,您无法在没有错误的情况下将其移至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']}