问题标签 [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.
python - 为什么 Python 不支持记录类型?(即可变的命名元组)
为什么 Python 本身不支持记录类型?这是一个可变版本的命名元组的问题。
我可以使用namedtuple._replace
. 但是我需要将这些记录放在一个集合中,并且由于namedtuple._replace
创建了另一个实例,我还需要修改这个很快就会变得混乱的集合。
背景:我有一个设备,我需要通过 TCP/IP 轮询它来获取其属性。即它的表示是一个可变对象。
编辑:我有一组需要轮询的设备。
编辑:我需要使用 PyQt 遍历显示其属性的对象。我知道我可以添加特殊方法,例如__getitem__
and __iter__
,但我想知道是否有更简单的方法。
编辑:我更喜欢属性固定的类型(就像它们在我的设备中一样),但是是可变的。
python - 将 Python namedtuple 序列化为 json
将 a 序列化为namedtuple
json 并保留字段名称的推荐方法是什么?
将 anamedtuple
序列化为 json 只会导致值被序列化,并且字段名称在翻译中丢失。我希望在 json 化时也保留这些字段,因此执行以下操作:
上面的内容按照我的预期序列化为 json ,并且namedtuple
在我使用的其他地方(属性访问等)中表现得一样,除了在迭代它时会出现类似非元组的结果(这对我的用例来说很好)。
在保留字段名称的情况下转换为 json 的“正确方法”是什么?
python - 从 namedtuple 获取值的名称
我有一个带有集合的模块:
在另一个模块中,我通过这个集合进行迭代,我想获取项目的名称:
所以在上面的代码中,我想代替x
(它是一个对象)传递,例如,DepartureTimeASC
或ArrivalTimeASC
。
我怎样才能得到这个名字?
python - Python解包命名元组的二维列表
我有一个命名元组的二维列表(假设每个元组都有 N 个值),我想将它们解压缩到 N 个不同的二维列表中,其中每个解压缩的二维列表完全由来自原始清单。例如,如果我有这个二维列表:
我希望 3 个结果是:
如果我只有一个元组的一维列表,我会使用zip(*mylist)
,例如:
我可以通过嵌套将其扩展到我的情况:
但这并没有给我想要的列表,并且嵌套的解包zip(*)
函数不是那么可读。有人对更 Pythonic 的解决方案有任何想法吗?如果您可以在最终结果中的某处使用元组属性的名称,则可以加分。
实际上,现在我想到了,如果我可以有一个 dict 将元组属性的名称映射到其各自的矩阵,那将是理想的,例如:
python - 等价于 NumPy 中的命名元组?
是否可以创建一个行为非常类似于 collections.namedtuple 的 NumPy 对象,从某种意义上说,可以像这样访问元素:
我尝试使用复杂的数据类型:
这将创建一个具有命名元组类型的 0 维值;它几乎可以工作:
但是,元素访问不起作用,因为“数组”是 0 维的:
有没有办法使用 NumPy 对象获得上述所需行为(通过字符串和索引进行项目分配)?
python - 打印命名元组
在 Python 2.7.1 中,我可以创建一个命名元组:
我可以填充它:
我可以这样打印:
测试(这=1,那=2)
但是为什么我不能这样打印呢?
TypeError:字符串格式化期间并非所有参数都转换了
编辑: 我应该知道在 Python 中查看具有字符串格式的打印元组
python - 是否可以在 SQLalchemy 中使用命名元组?
我一直试图让一个命名元组与 SQLalchemy 一起工作,但无济于事.. 网络搜索并不是很有启发性,而且我是 Python 和 SQLalchemy 的新手,所以我不确定我是否在追逐风车: (基本思想是我有一个命名元组,即:
如果我是正确的,它基本上会创建一个类 Point(tuple) 。起初这很好用,我可以创建如下对象:
但是在我创建引擎等并调用 mapper 之后,我无法再创建任何对象而不会出现此错误:
任何想法为什么会发生这种情况?有谁知道如何使命名元组与 sqlalchemy 一起工作?当然我可以定义我自己的 Point 类,但我现在正着迷于让 namedtuple 工作。我使用的是 Python 2.7,SQLalchemy 0.6.6(sqlite 引擎)
例子:
我正在尝试这样的事情:
主要思想是我想要一个可以轻松存储在数据库中的命名集合。所以这:
不会与 sqlalchemy 一起工作(我认为)。我可以创建一个 Bunch 类,但我不会事先知道我想在我的集合中存储多少个整数。我会在创建数据库之前设置它。我希望我是有道理的..
python - 在运行时创建类时,使用 exec 而不是 type() 有什么优势?
我想在运行时在 python 中动态创建类。
例如,我想复制下面的代码:
...但我希望动态创建 Foo1、Foo2、Foo 类(即:在执行期间而不是在首次编译时)。
实现此目的的一种方法是使用type()
,如下所示:
我也可以用 来实现它exec
,如下所示:
的使用exec
并不适合我(正如我所期望的那样,很多阅读此问题的人都不会使用),但这正是exec
python类的实现方式(参见这一行)。同样非常相关的是类的创建者(Raymond Hettinger)对here的这种使用的辩护。在这个辩护中,声明“命名元组的一个关键特征是它们完全等同于手写类”,这可能意味着使用不如使用...collections.namedtuple()
exec
type()
exec
有区别吗?为什么使用exec
vs type()
?
我希望答案可能是两种方式都是相同的,只是namedtuple
实现中有很多 namedtuple 变量贯穿其中,并且通过为所有方法动态生成闭包来执行此操作会使代码变得笨拙,但我想知道如果还有更多的东西。
关于我对 的不适exec
,我确实认识到,如果不受信任的各方无法向其中注入恶意代码,那应该没问题……只是确保这让我感到紧张。
python - 在命名元组中使用'_'作为类型名有什么特别的吗?
我正在查看在_
a 中使用 for 类型名的代码namedtuple
。我想知道这样做的目的是什么。
为什么不直接使用String
?
javascript - 如何在javascript中实现python的namedtuple
我将如何在javascript中实现python的namedtuple?理想情况下,我还想要一个函数,我可以“映射”一系列序列,以将其转换为类似命名元组的对象序列。
请注意,我不想每次都编写一个像“Point”这样的新类,而是想要一个工厂函数,它产生一个支持具有给定字段名称的列表项访问的新类。
旁注:这个问题的一个假设是javascript地图使用的内存更少。这个假设合理吗?