问题标签 [namedtuple]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
41341 浏览

python - 为什么 Python 不支持记录类型?(即可变的命名元组)

为什么 Python 本身不支持记录类型?这是一个可变版本的命名元组的问题。

我可以使用namedtuple._replace. 但是我需要将这些记录放在一个集合中,并且由于namedtuple._replace创建了另一个实例,我还需要修改这个很快就会变得混乱的集合。

背景:我有一个设备,我需要通过 TCP/IP 轮询它来获取其属性。即它的表示是一个可变对象。

编辑:我有一组需要轮询的设备。

编辑:我需要使用 PyQt 遍历显示其属性的对象。我知道我可以添加特殊方法,例如__getitem__and __iter__,但我想知道是否有更简单的方法。

编辑:我更喜欢属性固定的类型(就像它们在我的设备中一样),但是是可变的。

0 投票
11 回答
52916 浏览

python - 将 Python namedtuple 序列化为 json

将 a 序列化为namedtuplejson 并保留字段名称的推荐方法是什么?

将 anamedtuple序列化为 json 只会导致值被序列化,并且字段名称在翻译中丢失。我希望在 json 化时也保留这些字段,因此执行以下操作:

上面的内容按照我的预期序列化为 json ,并且namedtuple在我使用的其他地方(属性访问等)中表现得一样,除了在迭代它时会出现类似非元组的结果(这对我的用例来说很好)。

在保留字段名称的情况下转换为 json 的“正确方法”是什么?

0 投票
2 回答
45331 浏览

python - 从 namedtuple 获取值的名称

我有一个带有集合的模块:

在另一个模块中,我通过这个集合进行迭代,我想获取项目的名称:

所以在上面的代码中,我想代替x(它是一个对象)传递,例如,DepartureTimeASCArrivalTimeASC

我怎样才能得到这个名字?

0 投票
4 回答
2904 浏览

python - Python解包命名元组的二维列表

我有一个命名元组的二维列表(假设每个元组都有 N 个值),我想将它们解压缩到 N 个不同的二维列表中,其中每个解压缩的二维列表完全由来自原始清单。例如,如果我有这个二维列表:

我希望 3 个结果是:

如果我只有一个元组的一维列表,我会使用zip(*mylist),例如:

我可以通过嵌套将其扩展到我的情况:

但这并没有给我想要的列表,并且嵌套的解包zip(*)函数不是那么可读。有人对更 Pythonic 的解决方案有任何想法吗?如果您可以在最终结果中的某处使用元组属性的名称,则可以加分。

实际上,现在我想到了,如果我可以有一个 dict 将元组属性的名称映射到其各自的矩阵,那将是理想的,例如:

0 投票
4 回答
3652 浏览

python - 等价于 NumPy 中的命名元组?

是否可以创建一个行为非常类似于 collections.namedtuple 的 NumPy 对象,从某种意义上说,可以像这样访问元素:

我尝试使用复杂的数据类型:

这将创建一个具有命名元组类型的 0 维值;它几乎可以工作:

但是,元素访问不起作用,因为“数组”是 0 维的:

有没有办法使用 NumPy 对象获得上述所需行为(通过字符串和索引进行项目分配)?

0 投票
5 回答
13679 浏览

python - 打印命名元组

在 Python 2.7.1 中,我可以创建一个命名元组:

我可以填充它:

我可以这样打印:

测试(这=1,那=2)

但是为什么我不能这样打印呢?

TypeError:字符串格式化期间并非所有参数都转换了

编辑: 我应该知道在 Python 中查看具有字符串格式的打印元组

0 投票
2 回答
3489 浏览

python - 是否可以在 SQLalchemy 中使用命名元组?

我一直试图让一个命名元组与 SQLalchemy 一起工作,但无济于事.. 网络搜索并不是很有启发性,而且我是 Python 和 SQLalchemy 的新手,所以我不确定我是否在追逐风车: (基本思想是我有一个命名元组,即:

如果我是正确的,它基本上会创建一个类 Point(tuple) 。起初这很好用,我可以创建如下对象:

但是在我创建引擎等并调用 mapper 之后,我无法再创建任何对象而不会出现此错误:

任何想法为什么会发生这种情况?有谁知道如何使命名元组与 sqlalchemy 一起工作?当然我可以定义我自己的 Point 类,但我现在正着迷于让 namedtuple 工作。我使用的是 Python 2.7,SQLalchemy 0.6.6(sqlite 引擎)

例子:

我正在尝试这样的事情:

主要思想是我想要一个可以轻松存储在数据库中的命名集合。所以这:

不会与 sqlalchemy 一起工作(我认为)。我可以创建一个 Bunch 类,但我不会事先知道我想在我的集合中存储多少个整数。我会在创建数据库之前设置它。我希望我是有道理的..

0 投票
3 回答
458 浏览

python - 在运行时创建类时,使用 exec 而不是 type() 有什么优势?

我想在运行时在 python 中动态创建类。

例如,我想复制下面的代码:

...但我希望动态创建 Foo1、Foo2、Foo 类(即:在执行期间而不是在首次编译时)。

实现此目的的一种方法是使用type(),如下所示:

我也可以用 来实现它exec,如下所示:

的使用exec并不适合我(正如我所期望的那样,很多阅读此问题的人都不会使用),但这正是execpython类的实现方式(参见这一行)。同样非常相关的是类的创建者(Raymond Hettinger)对here的这种使用的辩护。在这个辩护中,声明“命名元组的一个关键特征是它们完全等同于手写类”,这可能意味着使用不如使用...collections.namedtuple()exec type()exec

有区别吗?为什么使用execvs type()

我希望答案可能是两种方式都是相同的,只是namedtuple实现中有很多 namedtuple 变量贯穿其中,并且通过为所有方法动态生成闭包来执行此操作会使代码变得笨拙,但我想知道如果还有更多的东西。

关于我对 的不适exec,我确实认识到,如果不受信任的各方无法向其中注入恶意代码,那应该没问题……只是确保这让我感到紧张。

0 投票
2 回答
329 浏览

python - 在命名元组中使用'_'作为类型名有什么特别的吗?

我正在查看在_a 中使用 for 类型名的代码namedtuple。我想知道这样做的目的是什么。

为什么不直接使用String

0 投票
1 回答
2312 浏览

javascript - 如何在javascript中实现python的namedtuple

我将如何在javascript中实现python的namedtuple?理想情况下,我还想要一个函数,我可以“映射”一系列序列,以将其转换为类似命名元组的对象序列。

请注意,我不想每次都编写一个像“Point”这样的新类,而是想要一个工厂函数,它产生一个支持具有给定字段名称的列表项访问的新类。

旁注:这个问题的一个假设是javascript地图使用的内存更少。这个假设合理吗?