【问题标题】:PYTHON Change value in json object based on list of keysPYTHON 根据键列表更改 json 对象中的值
【发布时间】:2021-07-12 21:10:21
【问题描述】:

假设我们有一个 json dict our_dict = {'foo': { 'key': 'value' }, 'fizz': 'buzz'}

查找函数f(d, l_keys, value),它更改由键列表l_keys 索引的d 中的值并返回d。列表的长度可以变化,不需要错误处理。

例子:

f(out_dict, ['foo', 'key'], 'a new value')

应该返回

{'foo': { 'key': 'a new value' }, 'fizz': 'buzz'}

到目前为止我的尝试:

_tmp = d[l_keys[0]]
for i in range(1, len(l_keys)):
    _tmp = _tmp[l_keys[i]]
_tmp = value

问题是对_tmp的改变并没有反映在d中

【问题讨论】:

  • 也请发布您的尝试
  • 一个 json 字典不存在。 JSON 是一个 STRING 内容。那么到目前为止你尝试了什么?
  • 我可以在 cmets 中添加我的尝试吗?
  • 编辑您的问题并将其添加到@SuperMan
  • edit 为帖子添加重要内容

标签: python json python-3.x loops dictionary


【解决方案1】:

JSON是字符串格式,没有这样的json dict,因为dict是python结构。 our_dict = {'foo': { 'key': 'value' }, 'fizz': 'buzz'} 只是一个 python 字典


我建议您迭代除最后一个以外的参数键,以阅读有趣的内部字典,然后进行替换

def f(our_dict: dict, param: list[str], param1: str):
    tmp_dict = our_dict
    for p in param[:-1]:
        tmp_dict = tmp_dict[p]
    tmp_dict[param[-1]] = param1
    return our_dict

例子

our_dict = {'foo': {'key': 'value'}, 'fizz': 'buzz'}
print(f(our_dict, ['foo', 'key'], 'a new value'))
# {'foo': {'key': 'a new value'}, 'fizz': 'buzz'}

our_dict = {'foo': {'key': {'a': {'b': 'value'}}}, 'fizz': 'buzz'}
print(f(our_dict, ['foo', 'key'], 'a new value'))
# {'foo': {'key': 'a new value'}, 'fizz': 'buzz'}

our_dict = {'foo': {'key': {'a': {'b': 'value'}}}, 'fizz': 'buzz'}
print(f(our_dict, ['foo', 'key', 'a', 'b'], 'a new value'))
# {'foo': {'key': {'a': {'b': 'a new value'}}}, 'fizz': 'buzz'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多