Python编辑通过引用修改dict值

时间:2015-03-16 13:55:41

标签: python pointers dictionary reference

我正在使用Python 3和PyQt5构建一个应用程序,我必须从任何dict生成一个TreeView。 Treeview将包含包含由dict的值和密钥对组成的行的数据项。值应在UI中可编辑。现在,用这段代码很容易从dict生成项目:

 def createTreeFromDict(self, data, parent, top=False):
    if isinstance(data, dict):
        for key, value in data.items():
            if isinstance(value, dict):
                node = TreeItem([key, ""], parent)
                parent.appendChild(node)
                self.createTreeFromDict(value, node)

            elif isinstance(value, list):
                node = TreeItem([key, ""], parent)
                parent.appendChild(node)
                self.createTreeFromDict(value, node)

            else:
                print(key)
                print(value)
                node = TreeItem([key, value], parent)
                parent.appendChild(node)


    if isinstance(data, list):
        for index, value in enumerate(data):
            if isinstance(value, dict):

                node = TreeItem([index+1, ""], parent)
                parent.appendChild(node)
                self.createTreeFromDict(value, node)

            elif isinstance(value, list):
                node = TreeItem([index+1, ""], parent)
                parent.appendChild(node)
                self.createTreeFromDict(value, node)

            else:
                node = TreeItem(["juttu", value], parent)
                parent.appendChild(node)

    if top:
        self.layoutChanged.emit()

但是,我正在考虑如何将它绑定到原始的多维dict,以便当用户编辑一个项的值时,它会更改原始dict中的值。问题是dict可以包含子序列和列表,所以我不能只将key存储到Item中,同时引用原始dict。

我想我可以通过原始字典进行递归搜索以找到正确的dict键值对,但首先我想知道是否可以执行以下操作:

当我在代码中创建项目时,你可以看到我如何传递新的TreeItem键和值:node = TreeItem([key, value], parent)

是否可以将原始字典中此特定键值对的引用/指针传递给TreeItem?因此,如果我编辑引用的值,它将更新原始字典中的值?或者换句话说我如何将mydict [“mykey”]作为一个引用原始对象的变量传递?

0 个答案:

没有答案