修改字典

时间:2018-04-04 08:02:37

标签: python python-2.7 dictionary nested

考虑下面显示的这个词典:

"Title": {
"Label-1": {
    "sublabel-1": {
        "item1": {}, 
        "item2": {}
        }, 
    "sublabel-2": {
        "item3": {}, 
        "item4": {}, 
        "item5": {}
        }
    }
"Label-2": {
    "sublabel-1": {
        "item6": {}, 
        "item7": {}, 
        "item8": {}, 
        }
    }
}

这是一个修改一些键值对的字典,如下所示。

values_to_add={item1:a,item2:b}

目标是将值a和b添加到字典中的相应键中。

作为参考,我阅读了以下帖子:

1。First Reference: (不同之处在于我只需修改键值对,而不是更新变量中给出的键值对的详细跟踪。)

2。Second Reference: (不幸的是,没有跟进这个问题。)

其他一些要点:

  1. 字典的级别和深度可能会有所不同。主要关注点是在大多数时候为任何子标签的最里面的键添加值。(在本例中为item1和item2)

  2. 使用python 2来操作字典。

  3. 我目前正在尝试创建一个程序来解决它。希望能够对问题的不同方法有所了解并学习新的东西。

1 个答案:

答案 0 :(得分:1)

您的数据结构看起来反映了您想要输出数据的方式,这使更新过程变得复杂。

推迟构建嵌套字典。相反,设置平面仅包含叶键的字典,并将上级键设置为数据:

{
"item1": {'path': ("Title","Label-1","sublabel-1"), "values":{} }, 
"item2": {'path': ("Title","Label-1","sublabel-1"), "values":{} }, 
"item3": {'path': ("Title","Label-1","sublabel-2"), "values":{} },  
"item4": {'path': ("Title","Label-1","sublabel-2"), "values":{} }, 
"item5": {'path': ("Title","Label-1","sublabel-2"), "values":{} },
"item6": {'path': ("Title","Label-2","sublabel-1"), "values":{} }, 
"item7": {'path': ("Title","Label-2","sublabel-1"), "values":{} },  
"item8": {'path': ("Title","Label-2","sublabel-1"), "values":{} },  
}

完成后,您可以遍历它并构建所需的嵌套结构。这也使您可以轻松容纳不同长度的关键路径,否则将导致非常复杂的访问方法。

这当然假设您的叶键是唯一的。这也隐含在你的问题中。不过,它确实让我觉得这是一个不太可能的假设。