命名元组和冻结字典的区别

5

我知道没有冻结字典数据类型,但如果有一个,它与命名元组有何不同?在我看来,命名元组执行所需的操作,但显然它并没有。那么它们之间有什么区别?


是的,但我的意思是它似乎执行了访问键值所需的操作。 - jamylak
2个回答

11

从API的角度来看,可能没有太大区别:

  • namedtuple 的键总是字符串,但有一些限制:

任何有效的Python标识符都可以用作字段名,除了以下划线开头的名称。有效的标识符由字母、数字和下划线组成,但不能以数字或下划线开头,也不能是诸如class、for、return、global、pass或raise等关键字。

  • namedtuple 可以像普通元组一样访问。

但在内部,它们非常不同:

命名元组实例没有每个实例字典,因此它们很轻量级,需要的内存与普通元组相同。


虽然 tupledict 更紧凑,但是 namedtupledict 具有完全不同的 API。例如,默认情况下您可以迭代值,并且 x in mynamedtuple 检查值。此外,“键”只能是字符串,而 frozendict 可以将任何可哈希类型作为键,等等。 - Marco Sulla

-2

区别很简单:字典元组不同,它们是两种完全不同的数据结构。


9
“它们不同”并不是对于“它们有何不同”的问题的回答。 - agf
1
问题不够清晰 - 他问的是它们之间的区别,好像它们是一样的,他分辨不出来。或者我没有理解 OP 的意思 :) - iTayb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接