草庐IT

namedtuple

全部标签

Python有了Tuple为什么还要设计Namedtuple?

在Python中,namedtuple是一个非常实用的工具,它提供了一种创建具有命名字段的元组的简单方法。它是collections模块中的一部分,为我们处理结构化数据提供了便利。本文将介绍namedtuple的基本用法,并演示它如何在实际中发挥作用。1.基本用法namedtuple的基本语法如下:fromcollectionsimportnamedtuple#创建一个命名元组类Person=namedtuple('Person',['name','age','gender'])#创建一个命名元组对象person=Person('Alice',25,'Female')#访问命名元组字段prin

python - namedtuple 的相等重载

有没有办法为python中的namedtuple重载相等运算符__eq__(self,other)?我知道这在类和重新定义方法中是可能的,但这对于namedtuple是否也可能,您将如何实现它? 最佳答案 我认为,考虑到namedtuple的公共(public)API,如果不覆盖就不可能做到这一点。最短的解决方案是:classPerson(namedtuple('Person',['ssn','name'])):def__eq__(self,other):returnself.ssn==other.ssn-->>>p1=Person

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

我将如何在javascript中实现python的namedtuple?理想情况下,我还想要一个可以“映射”一系列序列的函数,以将其转换为一系列类似namedtuple的对象。//withunderscore.jsincluded...varpoints=[[1,2],[3,4],[4,5]varPoint=namedlist('Point','xy')points=_.map(Point._make,points)point1=points[0]varx=point1.xvary=point1.y请注意,我不想每次都编写一个像“Point”这样的新类,而是想要一个工厂函数来生成一个支

python - 命名元组的名称和引用可以不同吗?

在阅读fmark对问题Whatare"namedtuples"inPython?的回答时我看到那里给出的示例具有相同的名称和引用,即单词Point在以下语句中出现了两次:Point=namedtuple('Point','xy')所以我去引用了原文:https://docs.python.org/2/library/collections.html#collections.namedtuple在这里我也找到了另外两个例子:EmployeeRecord=namedtuple('EmployeeRecord','name,age,title,department,paygrade')Col

python - 对 namedtuple 类进行自定义排序

我使用namedtuple很多课。我今天一直在想,是否有一种很好的方法可以为这样的类实现自定义排序,即使默认排序键不是namedtuple的第一个元素(然后是第二个、第三个等)。我的第一直觉是实现__lt__和__eq__并让total_ordering做剩下的(它填写le,ne,gt,ge):fromcollectionsimportnamedtuplefromfunctoolsimporttotal_ordering@total_orderingclassB(namedtuple('B','xy')):def__lt__(self,other):returnself.y但是:def

python - 使用带有变量的 namedtuple._replace 作为字段名

我可以使用变量引用namedtuple字段名吗?fromcollectionsimportnamedtupleimportrandomPrize=namedtuple("Prize",["left","right"])this_prize=Prize("FirstPrize","SecondPrize")ifrandom.random()>.5:choice="left"else:choice="right"#retrievethevalueof"left"or"right"dependingonthechoiceprint"Youwon",getattr(this_prize,cho

python - 以 unicode 字符串为名称的 namedtuple

我在将unicode字符串指定为命名元组的名称时遇到问题。这有效:a=collections.namedtuple("test","value")这不是:b=collections.namedtuple("βαδιζόντων","value")我得到了错误Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib64/python3.4/collections/__init__.py",line370,innamedtupleresult=namespace[typename]KeyError:'βαδιζόντων'为什么会

python - namedtuple return 和它的 typename 参数有什么区别?

Python文档说:collections.namedtuple(typename,field_names[,verbose=False][,rename=False])Returnsanewtuplesubclassnamedtypename.它给出了一个例子>>>Point=namedtuple('Point',...在我能找到的所有示例中,namedtuple的返回值和参数typename的拼写相同。实验一下,好像参数不重要:>>>Class=collections.namedtuple('Junk','field')>>>obj=Class(field=1)>>>printob

Python 3.5 类型化的 NamedTuple 语法产生 SyntaxError

当我尝试新类型的namedtuple语法时,我得到一个SyntaxError:invalidsyntax错误:classEmployee(NamedTuple):name:strid:int在Python3.5.2中,即使根据thedocumentation它应该从3.5+开始有效。我错过了什么吗?我在代码中通过typing导入了NamedTuple。 最佳答案 声明您正在使用的name和id字段类型的语法需要Python3.6orup.Python3.5不支持所需的变量级类型提示。来自typing.NamedTupledocume

namedtuple 中 namedtuple 的 Python 语法

是否可以在另一个namedtuple中包含一个namedtuple?例如:fromcollectionsimportnamedtuplePosition=namedtuple('Position','xy')Token=namedtuple('Token',['key','value',Position])它给出一个“ValueError:类型名称和字段名称必须是有效的标识符”此外,我很好奇是否有更Pythonic的方法来构建这样的嵌套容器? 最佳答案 您混淆了两个概念-namedtuple的结构和分配给它们的值。结构需要唯一名称列