【发布时间】:2011-10-25 04:39:16
【问题描述】:
None 似乎可以用作字典键,但我想知道这是否会在以后导致麻烦。例如,这有效:
>>> x={'a':1, 'b':2, None:3}
>>> x
{'a': 1, None: 3, 'b': 2}
>>> x[None]
3
我使用的实际数据是教育标准。每个标准都与一个内容区域相关联。一些标准也与内容子领域相关联。我想制作一个{contentArea:{contentSubArea:[standards]}} 形式的嵌套字典。其中一些 contentSubArea 键将为 None。
特别是,我想知道如果我寻找一个在某些时候不存在的密钥,或者类似的意外情况,这是否会导致混乱。
【问题讨论】:
-
导致麻烦的是使用
NaN作为键。它具有欺骗性,因为它是可散列的,但不等于自身。也就是说:float('nan') == float('nan')在我尝试过的两个 Python 实现中返回False。如果您将它用作字典中的键,它不会引发异常,并且当且仅当它是相同的NaN对象(具有相同的id(..))时,将其用作索引才有效——尽管这可能依赖于实现。所以它可能会按预期工作一段时间,然后失败。这些麻烦都不会影响None,即使只是因为只有一个None。
标签: python dictionary key