在python中使用namedtuple再现树数据结构子/父

问题描述

我正在尝试嵌套名称元组,试图创建一个数据结构,最终可以使用该命名法访问数据:

parent.child.var1.a,即不带括号的点表示法。

我知道用其他方式编码可能更好,但我只是想了解一下这种金属练习,以了解嵌套的namedtupples是否可行。

到目前为止,我有

sub=namedtuple('sub',('var1','var2'))
first =sub(5,6)
second = sub(7,8)
third = sub(9,10)
fleet = {'first':first,'second':second,'third':third}

# ideally here the nametupple would be create on the fly with
# def create_parent(name,fleet)
filing = namedtuple('filing',fleet.keys())
for i,value in enumerate(fleet.values()):
    filing[i] = value

这不起作用,因为分配文件[i]给出了错误

基本上,我创建了一个名为sub的第一个命名元组,然后尝试动态创建另一个其中包含可变数量“ subs”的命名tupple。我创建了一个函数作为构造函数,将变量添加为字典的键。到现在为止还挺好。但是,当我要分配变量的内容时,就会出现问题。 我的意图是查看下面的伪代码中的dict和“不知何故”编码:

对于字典的每个键值,

将该值赋给称为归档的命名元组的称为键的变量。 更确切地说,在循环时,我假装获取字典中每个键的值(这是namedtuple中的变量名),并将一些数据传递给它。

有什么主意吗?

注意:如果可行,目的是进一步嵌套名为tuple的元组,并能够以parent.second.var1等身份访问最深的数据。

注2:当然,根据第一个答案,我不能更改元组的值。连音是不变的。我要创建的是一个动态命名组,变量名称是字典的键,而这些变量的值是dict.values()。

注意3:据我所见,建议的答案使用嵌套的名称元组,而不使用动态创建的元组。即关键和困难是嵌套命名元组。在我的问题中,关键是要基于其他对象(即字典)创建一个namedtuple,这样,变量名就取决于其他对象(dict.keys)和值(dict.values())

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...