0

注意,使用 Python 2.4。这是我称为 d_ourbook 的字典:

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

该值是浮点数列表。我正在尝试制作一个显示相同字典但值限制为两个浮点的函数。

我做了一个浮点-> 2decimal 字符串函数,称为 two(floatnum):

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

任何帮助都是救命稻草。

4

1 回答 1

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']}
于 2013-04-03T06:09:46.163 回答