如何将复杂dict的所有值设置为相同的值?

时间:2014-12-29 13:43:20

标签: python dictionary key

给出一个非常复杂的dict dict_a ,即一些键对应于简单值(level- 1 ),但其他许多对应于另一个dict(level- 名词的)。

我的问题是如何将其所有值(无论是 1 还是level- n )设置为单个值,例如100。

例如:

a = 10
b = {1: 11, 2: 22, 3{1: 13, 2: {4: 33}}}
c = {1: a, 2: b}

如何将dict c的值设置为0?

2 个答案:

答案 0 :(得分:3)

简单的递归函数应该可以工作:

def setdictvalto(d, value):
    for k in d:
        if isinstance(d[k], dict):
            setdictvalto(d[k], value)
        else:
            d[k] = value

演示:

>>> setdictvalto(c, 100)
>>> c
{1: 100, 2: {1: 100, 2: 100, 3: {1: 100, 2: {4: 100}}}}

答案 1 :(得分:1)

def setZeroes(d):
    for key, value in d.items():
        if isinstance(value, dict):
            setZeroes(value)
        else:
            d[key] = 0

>>> c
{1: 10, 2: {1: 11, 2: 22, 3: {1: 13, 2: {4: 33}}}}

>>> setZeroes(c)

>>> c
{1: 0, 2: {1: 0, 2: 0, 3: {1: 0, 2: {4: 0}}}}