【问题标题】:How to get most nested values?如何获得最多的嵌套值?
【发布时间】:2017-05-15 11:05:55
【问题描述】:

我有一个如下所示的嵌套字典:

d = {"my momma" : {"your momma" : 1}, "flying on" : {"a broom" : 2}}

我需要将所有嵌套最多的值(1 和 2)乘以 2。

我该怎么做? 我只是无法访问它们。

【问题讨论】:

  • 你的代码在哪里,它到底有什么问题?提供minimal reproducible example
  • 我没有代码。我试图用一个 for 循环来捕捉这些值,但这没有用。
  • 这听起来很像你确实有代码。 for 循环是否以某种方式 not 代码?表现出一些努力!
  • 那么第一步就是写多行。这不是代码编写或教程服务。这次你很幸运能得到答案,但为了将来学习How to Ask
  • 问是可以的,但如果你已经尝试了所有你能想到的,那么在问题中表明这一点

标签: python-2.7 dictionary nested key-value


【解决方案1】:

递归,如果你不知道你会有多少嵌套级别:

INDEX = []

def disMantle(target, depth):
    # ensure a list for given depth
    while len(INDEX) <= depth: INDEX.append([])
    # analyze given target
    for key in target:
        atype = type(target[key])

        if atype == dict:
            # next depth
            disMantle(target[key], depth+1)
        elif atype in [int,float]:
            # record the numeric values
            INDEX[depth].append({'key':key,'value':target[key]})

d = {"my momma" : {"your momma" : 1}, "flying on" : {"a broom" : 2.0}}

disMantle(d, 0)
print INDEX[-1]

【讨论】:

    【解决方案2】:
    for key in d:
        for skey in d[key]:
            d[key][skey] *= 2
    print d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2017-04-11
      • 2020-07-04
      • 1970-01-01
      相关资源
      最近更新 更多