Questions tagged «namedtuple»

11
Python中的“命名元组”是什么?
阅读Python 3.1中的更改后,我发现了一些意外…… sys.version_info元组现在是一个命名的元组: 我以前从未听说过命名元组,并且我认为元素可以用数字(如在元组和列表中)或键(如字典中)索引。我从未想到它们可以同时被索引。 因此,我的问题是: 什么叫元组? 如何使用它们? 为什么/何时应该使用命名元组而不是普通元组? 为什么/何时应该使用普通元组而不是命名元组? 是否有某种“命名列表”(命名元组的可变版本)?

21
namedtuple和可选关键字参数的默认值
我正在尝试将冗长的空心“数据”类转换为命名元组。我的班级目前看起来像这样: class Node(object): def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right 转换为namedtuple它后看起来像: from collections import namedtuple Node = namedtuple('Node', 'val left right') 但是这里有一个问题。我的原始类允许我只传递一个值,并通过对named / keyword参数使用默认值来处理默认值。就像是: class BinaryTree(object): def __init__(self, val): self.root = Node(val) 但这在我的重构命名元组的情况下不起作用,因为它希望我传递所有字段。我当然可以替换Node(val)to 的出现,Node(val, None, None)但是这并不是我喜欢的。 那么,是否存在一个可以使我的重写成功而又不增加很多代码复杂性(元编程)的好技巧,还是我应该吞下药丸并继续进行“搜索并替换”?:)


6
将namedtuple转换成字典
我在python中有一个命名的tuple类 class Town(collections.namedtuple('Town', [ 'name', 'population', 'coordinates', 'population', 'capital', 'state_bird'])): # ... 我想将Town实例转换成字典。我不希望它与城镇中字段的名称或数量严格相关。 有没有一种方法可以编写它,以便我可以添加更多字段,或者传入完全不同的命名元组并获得字典。 我无法更改其他人代码中的原始类定义。因此,我需要以一个Town实例为例,并将其转换为字典。


10
Python中存在可变的命名元组吗?
任何人都可以修改namedtuple或提供替代类,以使其适用于可变对象吗? 主要是为了提高可读性,我想要执行类似于namedtuple的操作: from Camelot import namedgroup Point = namedgroup('Point', ['x', 'y']) p = Point(0, 0) p.x = 10 >>> p Point(x=10, y=0) >>> p.x *= 10 Point(x=100, y=0) 腌制所得物体必须是可能的。并且根据命名元组的特征,在表示对象时输出的顺序必须与构造对象时参数列表的顺序相匹配。

10
将文档字符串添加到namedtuples?
是否可以通过简单的方式将文档字符串添加到namedtuple? 我试过了 from collections import namedtuple Point = namedtuple("Point", ["x", "y"]) """ A point in 2D space """ # Yet another test """ A(nother) point in 2D space """ Point2 = namedtuple("Point2", ["x", "y"]) print Point.__doc__ # -> "Point(x, y)" print Point2.__doc__ # -> "Point2(x, y)" 但这并不能解决问题。是否可以通过其他方式进行?

11
将Python namedtuple序列化为json
建议namedtuple使用保留的字段名称将a序列化为json的建议方式是什么? 将anamedtuple序列化为json只会导致值序列化,并且字段名称在转换中丢失。我希望在对json大小化时也保留字段,因此请执行以下操作: class foobar(namedtuple('f', 'foo, bar')): __slots__ = () def __iter__(self): yield self._asdict() 上面的代码按照我的预期序列化为json,并且namedtuple在我使用的其他地方(属性访问等)中起作用,除了在迭代过程中出现非元组之类的结果外(对于我的用例而言这很好)。 在保留字段名称的情况下转换为json的“正确方法”是什么?

8
将字典转换为namedtuple或其他可哈希的dict-like的Python方法?
我有一本字典,例如: d = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 我想将其转换为namedtuple。我当前的方法是使用以下代码 namedTupleConstructor = namedtuple('myNamedTuple', ' '.join(sorted(d.keys()))) nt= namedTupleConstructor(**d) 产生 myNamedTuple(a = 1,b = 2,c = 3,d = 4) 这对我来说很好用(我认为),但是我是否缺少诸如...的内置组件? nt = namedtuple.from_dict() ? 更新:正如评论中所讨论的,我想要将字典转换为命名元组的原因是它可以变得可散列,但仍然像字典一样仍然可以使用。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.