如何将字典中的每个值转换为浮点数? (递归的)

时间:2011-07-14 23:49:47

标签: python dictionary

  

d = {'得分':4,         '团队':{'黄色':11,'蓝':4}       }

如何获取字典,并将每个整数转换为浮点数?递归地,对于每个值最大深度。

4 个答案:

答案 0 :(得分:4)

def float_dict(d):
    new_dict = {}
    for k,v in d.iteritems():
        if type(v) == dict:
            new_dict[k] = float_dict(v)
        else:
            new_dict[k] = float(v)
    return new_dict


>>> d = { 'scores': 4, 'teams': { 'yellow': 11, 'blue': 4 } }
>>> print float_dict(d)
{'scores': 4.0, 'teams': {'blue': 4.0, 'yellow': 11.0}}

答案 1 :(得分:0)

def to_float(my_dict):
    for i in my_dict:
        if type(my_dict[i]) == dict:
            my_dict[i] = to_float(my_dict[i])
        elif type(my_dict[i]) == int:
            my_dict[i] = float(my_dict[i])
    return my_dict

答案 2 :(得分:0)

defun rec-func (dictionary &optional (current 0))
  if dictionary[current] == dict:
    rec-func (dictionary[current], 0)
  else:
    dictionary[current] = float(dictionary[current])
    rec-func (dictionary current+1)

这是一个递归函数,但它是一个迭代过程,它是伪代码。 另外,不要忘记进行一些有条件的检查,看看你是否已经到了最后。 可能不是最好的解决方案,我甚至没有测试过它。

嗯,问题实际上是获得字典的特定元素,但我认为我的功能应该有用......我希望。

编辑:哎呀,没有正确缩进,不知道如何做到这一点。

编辑(santa4nt):修正了它。

答案 3 :(得分:0)

>>> d = { 'scores': 4, 'teams': { 'yellow': 11, 'blue': 4 } }
>>> import pickle
>>> pickle.loads(pickle.dumps(d).replace("\nI","\nF"))
{'scores': 4.0, 'teams': {'blue': 4.0, 'yellow': 11.0}}

note pickle是递归的:)