问题标签 [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 投票
3 回答
3329 浏览

python - 对命名元组类的自定义排序

我经常使用namedtuple类。我今天一直在想是否有一种很好的方法可以为这样的类实现自定义排序,即使默认排序键不是 namedtuple 的第一个元素(然后是第二个、第三个等)。

我的第一个直觉是实现__lt____eq__total_ordering剩下的事情(它填写 le, ne, gt, ge):

然而:

哦,对了……只有在缺少total_ordering其他方法时才填写。由于 tuple/namedtuple 有这样的方法,total_ordering 没有为我做任何事情。

所以我想我的选择是

  1. 停止使用 namedtuple 并构建我自己的无聊类,继续使用 total_ordering
  2. 继续使用 namedtuple 并实现所有 6 种比较方法
  3. 继续使用 namedtuple 并插入一个排序值作为第一个字段。幸运的是,我没有太多的类实例,但通常我只是依靠字段的顺序来初始化它们,这可能很讨厌。也许这是一个坏习惯。

有关解决此问题的最佳方法的建议?

0 投票
2 回答
2907 浏览

python - 在 python 中将“参数列表”作为命名元组传递

我创建了一个名为 Engine 的命名元组,它包含我想在程序中传递的大部分信息。在这个元组内部,有几个参数和两个实例化的类,它们被下游的方法使用。

我有一个函数,download(engine)我传入enginedownload传递中的子函数engine——其中一些使用website,一些使用browser,一些使用s,还有一些使用e

现在,(作为程序员的我)的认知开销大大降低,我不再需要确保参数列表在可能发生的特定更改的下游和上游都是最新的——我只是通过engine下游,如果我在方法中使用参数,我使用engine.foo.

另一方面,感觉这是一种“懒惰”的编程——只是将所有内容包装到一个引擎“类”中,并将变量作为类上的方法似乎让一切都变得太容易了。此外,我发誓在这个实现中我没有看到某种开销。这是否有任何先例,因为它感觉太有用而无法忽视。

我应该在整个程序中使用 namedtuples 作为参数的替代品以减少传递的参数数量吗?

0 投票
2 回答
1283 浏览

python - 无法初始化子类命名元组的实例

我想我还没有理解如何定义一个从 namedtuple 子类化的类:

此代码引发TypeError : __new__() takes exactly 4 arguments (2 given).

任何想法为什么?

0 投票
2 回答
104 浏览

python - 使用命名元组迁移正在运行的代码

我在带有命名元组的服务器上运行代码:

服务器正在从其他服务器获取事件,从队列中出来。

我想在我的代码中添加一个新功能,该功能需要在 namedtuple 中添加一个新属性。有没有一种好方法可以做到这一点并保持向后兼容性?也就是说,我可以停止和启动服务器,并将代码更改为:

但与此同时,将有旧签名的事件排队。

以前有人做过吗?

0 投票
1 回答
298 浏览

python - python只打印文本文件中的名称

我不能让它只打印名字。
这是我到目前为止得到
的,这里是malenames.txt的链接:

http://www.ics.uci.edu/~kay/malenames.txt

0 投票
1 回答
1373 浏览

python - Python:作为命名元组对象的 Lambda 函数?

我编写了一个程序,其中我有一个相当典型的课程。在这个类中,我创建了多个 namedtuple 对象。namedtuple 对象包含许多项目,它们都工作正常,除了我尝试绑定到它的 lambda 函数。下面是一个精简的示例和我收到的错误消息。希望有人知道为什么会出错。提前致谢!

文件:test.py

文件:方程.py

错误:

0 投票
2 回答
2247 浏览

python - 存储固定键键的最佳方法:在 python 中通过键访问的值数据集?

我想要的是能够处理具有一组固定键的数据集。所有的键都是字符串。数据永远不会被编辑。我知道这可以用普通的字典来完成,如下所示:

他们必须能够像这样被调用:

但是,这看起来很浪费内存(因为字典显然让自己保持 1/3 为空或类似的东西,同时还要多次存储键),而且创建起来也很乏味,因为我需要继续输入相同的键在我的代码中一遍又一遍。我还冒着意外更改数据集中某些内容的风险。

我目前的解决方案是先将一组键存储在一个元组中,然后将数据也存储为元组。它看起来像这样:

要检索数据,我会这样做:

然后,我了解了这个名为 namedtuples 的东西,它似乎能够做我需要的事情:

但是,看来我不能简单地通过键调用值。相反,要通过键检索数据,我必须使用 getattr,这似乎不是很直观:

我的标准首先是内存效率,然后是性能效率。在这 3 种方法中,哪种方法最好?还是我错过了一些东西,并且有一个更pythonic的成语来获得我想要的东西?

编辑:我现在最近也了解到了 的存在__slots__,它显然对 key:value 对运行更有效,同时几乎消耗了相同的(?)内存量。与此类似的实现会是命名元组的合适替代方案吗?

0 投票
1 回答
1696 浏览

python - Python 命名元组切片

这是我在这里的第一个问题......

如果我有一个如下所示的命名元组

我有一个数组,其中包含如下的 namedtuple 集合

如何获得 S 的数组切片?

这不适用于错误:AttributeError:'list'对象没有属性'S'......

任何建议表示赞赏。谢谢。

0 投票
1 回答
5404 浏览

python - Python如何编辑存储在列表中的namedtuple中的数据?

问题

如何编辑 PicData 的值?

0 投票
1 回答
71 浏览

python - Python不同的结构数组中的日期时间

如果 Capturing Value 中的 DeviceInfoList 数组为 TRUE,同时 Datetime 与 datetime.now 不同,则超过 5 秒。然后打印真实,如何做到这一点?

p/s:Capturing 为 TRUE 且 datetime 大于 5 秒,必须是相同的数组索引。