首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python字典中的“记住”父键

python字典中的“记住”父键
EN

Stack Overflow用户
提问于 2018-07-28 21:51:55
回答 2查看 67关注 0票数 0

假设我有这个结构的字典:

x = {
  "a": {
      "b": {
         "c": 1
      }
  }
}

我创建了一个函数,它接受像some_func(structure={"a.b.c":2})这样的结构

我需要这个函数来遍历x并将c的值改成2。字典的深度对于这个函数来说是未知的。所以它必须依赖于传递给它的结构。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-28 22:03:07

您可以使用递归算法或functools.reduce来循环嵌套的字典结构。下面是后者的一个示例。为了说明,我们通过字典分配多个值。

x = {"a": {"b": {"c": 1, "d": 3}}}

from operator import getitem
from functools import reduce

def set_single_val(dataDict, mapKeys, value):
    mapList = mapKeys.split('.')
    reduce(getitem, mapList[:-1], dataDict)[mapList[-1]] = value

def set_vals(x, structure={}):
    for k, v in structure.items():
        set_single_val(x, k, v)

set_vals(x, structure={"a.b.c":2, "a.b.d":4})

print(x)

{'a': {'b': {'c': 2, 'd': 4}}}
票数 0
EN

Stack Overflow用户

发布于 2018-07-28 22:00:14

我已经做了一个库,它可以满足你的要求,更多的,Prodict

from prodict import Prodict

x = {
  "a": {
      "b": {
         "c": 1
      }
  }
}

p = Prodict.from_dict(x)
p.a.b.c = 2

print(p)
# {'a': {'b': {'c': 2}}}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51572024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档