当前位置: 首页 > 知识库问答 >
问题:

Python:从列表中读取键后更新嵌套命令中的值

周意智
2023-03-14

在从列表中读取键之后,我需要更新字典中的值。例如

d1={“sun”:{“mon”:“111”},“tue”:{“wed”:“222”},“thu”:{“fri”:{“sat”:“333”}}}和l1=[“thu”,“fri”,“sat”]。

这里我需要将d1[“thu”][“fri”][“sat”]的值更改为444

请告诉我如何编写一个函数,将d1l1和新值作为参数,并返回更新后的字典。

共有2个答案

燕元明
2023-03-14

您可以获取最后一个dict(需要更新)并更新其值。使用reduce函数非常简单

from functools import reduce

def update_dict(nested_dict, key, value):
    last_dict = reduce(lambda d, k: d[k], key[:-1], nested_dict)
    last_dict[key[-1]] = value

输出:

>>> d = {'a': {'b': 1, 'c': 2}}
>>> update_dict(d, ['a', 'b'], 2)
>>> d
{'a': {'b': 2, 'c': 2}}
羊舌高明
2023-03-14

或者你可以创建一个新的dict并用它来更新原来的dict

def create_update_dict(keys, val):
    if len(keys) == 1:
        return {keys[0]: val}
    else:
        return {keys[0]: create_update_dict(keys[1:], val)}

def update_dict_val(d, val, keys):
    update_dict = create_update_dict(keys, val)
    d.update(update_dict)
    return d
 类似资料:
  • 我有这个json 我想生成两个变量,比如 它们在和 我读过这篇文章,但它只适用于地图,但我的json是嵌套json。我怎样才能得到结果?

  • 我是一个新的Java程序员,来自Python背景。我有天气数据被收集/返回为一个JSON嵌套键,我不明白如何在这种情况下拉出值。我肯定这个问题以前有人问过,但是我发誓我已经谷歌了很多,似乎找不到答案。现在我使用的是json-简单,但我尝试切换到Jackson,但仍然不知道如何做到这一点。由于Jackson/Gson似乎是最常用的库,我希望看到使用其中一个库的示例。下面是数据的示例,后面是我到目前为

  • 问题内容: 谁能告诉我如何在嵌套列表中调用索引? 通常我只写: 但是如果我有一个带有嵌套列表的列表,如下所示: 我想分别浏览每个索引? 问题答案: 如果您确实需要索引,则可以按照内部列表再次执行以下操作: 但是遍历列表本身是更pythonic的: 如果您确实需要索引,也可以使用:

  • 问题内容: 我是来自Python的新Java程序员。我有正在收集/返回为带有嵌套键的JSON的天气数据,而且我不了解在这种情况下如何提取值。我敢肯定这个问题已经被问过了,但是我发誓我已经用Google搜索了很多东西,但是我似乎找不到答案。现在我正在使用json- simple,但我尝试切换到Jackson,但仍然不知道如何执行此操作。由于Jackson / Gson似乎是使用最频繁的库,因此,我很

  • 问题内容: 我要删除重复的项目,重复的项目可以撤消。结果应为: 如何在Python中实现? 问题答案: 如果订单很重要,您可以随时使用OrderedDict

  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数