我知道没有冻结字典数据类型,但如果有一个,它与命名元组有何不同?在我看来,命名元组执行所需的操作,但显然它并没有。那么它们之间有什么区别?
我知道没有冻结字典数据类型,但如果有一个,它与命名元组有何不同?在我看来,命名元组执行所需的操作,但显然它并没有。那么它们之间有什么区别?
从API的角度来看,可能没有太大区别:
namedtuple
的键总是字符串,但有一些限制:任何有效的Python标识符都可以用作字段名,除了以下划线开头的名称。有效的标识符由字母、数字和下划线组成,但不能以数字或下划线开头,也不能是诸如class、for、return、global、pass或raise等关键字。
namedtuple
可以像普通元组一样访问。但在内部,它们非常不同:
命名元组实例没有每个实例字典,因此它们很轻量级,需要的内存与普通元组相同。
tuple
比 dict
更紧凑,但是 namedtuple
与 dict
具有完全不同的 API。例如,默认情况下您可以迭代值,并且 x in mynamedtuple
检查值。此外,“键”只能是字符串,而 frozendict
可以将任何可哈希类型作为键,等等。 - Marco Sulla