有没有可能把一个namedtuple装进另一个namedtuple

例如:

from collections import namedtuple

Position = namedtuple('Position', 'x y')
Token = namedtuple('Token', ['key', 'value', Position])

这是"ValueError: Type names and field names must be valid identifiers"

此外,我很好奇,是否有Pythonic approach多个容器可以构建这样一个嵌套容器?

推荐答案

你混淆了两个概念——namedtuple的 struct 和分配给它们的值. struct 需要唯一名称的列表.值可以是任何值,包括另一个namedtuple.

from collections import namedtuple

Position = namedtuple('Position', 'x y')
Token = namedtuple('Token', ['key', 'value', 'position'])

t = Token('ABC', 'DEF', Position(1, 2))
assert t.position.x == 1

Python-3.x相关问答推荐

根据收件箱内部的值以行降序的特定顺序重新排序列

我的SELECT函数搜索的是列,而不是列中的数据.我怎么才能让它搜索数据呢?

Python多处理池:缺少一个进程

PySpark每毫秒使用先前的值填充数据

不同的焦点顺序和堆叠顺序 tkinter

替换 .txt 文件中的项目列表

Python中提取每个组/ID所属特定列中的自然数

在 python 中使用正则表达式在行尾查找特定元素

将 rgb numpy 图像转换为 rgb 列表和相应的索引值

在 pytest 中,如何测试 sys.exit('some error message')?

根据另一列值对多个数据框列进行分组

魔术8球txt文件列表

为什么 Python 枚举中的可变值是同一个对象?

类型提示和链式赋值以及多重赋值

解包时是否可以指定默认值?

判断 dict.items() 中的成员资格的时间复杂度是多少?

Pyodbc:登录超时错误

try 在 Mac OS 中运行此命令pipenv install requests时出错

清除 PyCharm 运行窗口

在 linux mint 上安装 python3-venv 模块