问题标签 [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 回答
2123 浏览

python - 仅使用传递的参数子集创建 namedtuple 对象

我正在从 MySQL 数据库中提取行作为字典(使用 SSDictCursor)并使用以下方法进行一些处理:

要使用namedtuple,我必须事先确切知道我想要的字段,这很好。但是,我希望允许用户将一个简单的SELECT *语句输入到我的程序中,然后它将遍历结果集的行,使用这些不同的类执行多个任务。为了完成这项工作,我的类必须以某种方式检查从游标传入的 N 个字段,并且只获取与namedtuple定义所期望的名称相对应的特定子集 M < N。

我的第一个想法是尝试编写一个可以应用于每个类的装饰器,它会检查该类以查看它所期望的字段,并仅将适当的参数传递给新对象。但是在过去的几天里,我刚刚开始阅读有关装饰器的内容,而且我对它们还没有那么自信。

所以我的问题分为两部分:

  1. 这可能与单个装饰器有关,它将确定被装饰的特定类需要哪些字段?
  2. 是否存在具有相同功能且更易于使用、修改和理解的替代方案?

我有太多潜在的表和字段排列,每个结果集中有数百万行,只需要编写一个通用namedtuple子类来处理每个不同的任务。查询时间和可用内存已被证明是限制因素。

如果需要的话:

0 投票
1 回答
1659 浏览

python - 将命名元组的值从字符串转换为整数

我正在创建一个脚本,以将 csv 文件从其列标题中读取到一组命名元组中。然后,我将使用这些命名元组提取满足特定条件的数据行。

我已经计算出输入(如下所示),但是在将数据输出到另一个文件之前过滤数据时遇到了问题。

我的输入文件的内容如下:

它们是从我的代码中打印出来的,如下所示:

Base(Locus='chr1:6484996',Total_Depth='1030',Average_Depth_sample='1030',Depth_for_17='1030') Base(Locus='chr1:6484997',Total_Depth='14',Average_Depth_sample='14', Depth_for_17='14') Base(Locus='chr1:6484998', Total_Depth='0', Average_Depth_sample='0', Depth_for_17='0')

我希望能够只提取 Total_Depth 大于 15 的记录。

直觉上我尝试了以下功能:

但是,这只会打印最后一行数据(来自上面的输出表)。我认为问题是双重的。据我所知,我不会将命名元组存储在任何地方以供以后引用。其次,这些数字是以字符串格式而不是整数形式读取的。

首先,如果我需要将我的命名元组存储在某个地方,有人可以纠正我。

其次,如何将字符串值转换为整数?或者这是不可能的,因为命名元组是不可变的。

谢谢!

之前问过一个关于字典的类似问题,但现在想改用 namedtuples。:)

0 投票
3 回答
2135 浏览

python - 要列出的命名元组字符串

如何将命名元组字符串转换为列表?

问题是我必须在 SQLite 的列中存储一个命名元组列表,这(显然)不支持该格式。我想只是将其转换为字符串。但是,由于我的元组是一个命名元组,我不知道如何从字符串再次列出。

我的命名元组列表是这样的^^^^,但它有 6 个参数,而不是上面显示的 2 个。编辑 - 参数是布尔值、整数和字符串。

我尝试了映射,但出现以下错误:

我愿意接受其他更简单的方法来做到这一点。

0 投票
1 回答
3696 浏览

python - python 内部如何实现命名元组?

命名元组是易于创建的轻量级对象类型。namedtuple可以使用类似对象的变量引用或标准元组语法来引用实例。如果这些数据结构可以通过对象延迟和索引访问,它们是如何在内部实现的?是通过哈希表吗?

0 投票
1 回答
196 浏览

python - 具有相同类型名的不同命名元组的有害副作用?

考虑以下函数:

该函数调用namedtuple以生成一个“临时”类,其字段名称与输入dict的键相同。然后它返回一个填充了值的实例。

我的问题是这是否有任何特殊的陷阱,因为typename论点namedtuple总是相同的,即使有不同的字段名称。例如,如果namedtuple在后台创建了一个会被覆盖的类,那么我以后可能会看到一些潜在的奇怪行为。这样做有什么副作用/陷阱吗?

可选信息:

如果你想知道我到底在做什么会让我编写这段代码,我有一个返回有点类似dict结果的 ORM。我已经看到对象在赋值时表现得很奇怪,我真的不想传递可能有或可能没有能力修改我的数据库的对象(取决于查询代码的编写方式)。尝试为每个查询维护 DTO 对象似乎太麻烦了,尝试使我的所有查询与一小组 DTO 兼容也是如此。所以我想出了一个快速、简单的方法来传递明显不可变的对象,我可以在其中编写类似dto.a. 它本质上是一个动态的、动态的 DTO 生成器。它还repr为我在调试时购买了一个相当不错的实现。

0 投票
1 回答
1026 浏览

python - How can I use Python namedtuples to insert rows into mySQL database

I have used namedtuples to read rows from mySQL ... it is great. Can I use the same mechanism to INSERT rows into mySQL. My system is changing quite a bit, so I need an simple way to map python values to columns in the database, without having to check the order of the values/columns every time I change my program I am using mySQLDB library - but could change

0 投票
1 回答
2658 浏览

python - namedtuple — 同一定义中不同类型名称的应用程序

Pythonnamedtuple工厂函数允许指定它创建的子类的名称两次——首先在声明的左侧,然后作为函数的第一个参数(IPython 1.0.0,Python 3.3.1):

我在 docs.python.org 站点上看到的所有示例在两个位置都使用相同的名称。但是可以使用不同的名称,它们的功能也不同:

我想知道这个功能可能有哪些应用程序。

0 投票
1 回答
2704 浏览

python - Python namedtuple T._make(iterable) vs T(* iterable)

小问题:我不明白为什么 Python 的 namedtuple 类型有一个 _make() 函数。据我所知,如果 T 是用 namedtuple 创建的类型,那么

是一回事。那么为什么要有 _make() 函数呢?有什么我想念的吗?

0 投票
4 回答
2993 浏览

python - Python:打印所有命名元组

我有以下代码:

我的问题是如何打印所有命名元组,例如:

我想看到这样的结果:

有任何想法吗?谢谢..

0 投票
1 回答
2121 浏览

python - Python3 — 替换动态选择的命名元组字段

我正在使用collections.namedtuple. 有时,我希望用户能够替换任意字段的内容。_replace()只要我们可以将其名称指定为参数的一部分,该方法就允许替换特定字段的内容: somenamedtuple._replace(somefield=newcontent). 但是,如果名称本身是由用户动态提供的,我无法找到一种方法来做到这一点。

这是一个最小的工作示例:

输出(Ipython 1.0.0,Python 3.3.1)如下。

record._replace()行试图将'two'设置为'asdf',而不是two静默失败。我曾想过使用evalinside _replace(),但_replace()不接受表达式作为参数。

我也尝试了内置函数setattr,但它不适用于命名元组,大概是因为它们是不可变的。