我喜欢使用字典作为switch语句的一种形式,通过设置布尔值作为键。示例:>>> def f(a):
... return {True: -a, a==0: 0, a > 0: a}[True]
...
>>> f(-3)
3
>>> f(3)
3
>>> f(0)
0
密钥True作为else/default大小写,并且只有在没有其他密钥被计算为True时才会返回。我猜这是假设对字典进行迭代的某种计算顺序。在
现在看一下最新版本的分支2.6、2.7、3.1和3.2的以下摘录:Hash randomization causes the iteration order of dicts and sets to be
unpredictable and differ across Python runs. Python has never
guaranteed iteration order of keys in a dict or set, and applications
are advised to never rely on it. Historically, dict iteration order
has not changed very often across releases and has always remained
consistent between successive executions of Python. Thus, some
existing applications may be relying on dict or set ordering.
这是否意味着使用dict作为开关调用将不再可能?或者我应该使用其他类(比如OrderedDict或其他什么)?或者也许我已经完全不在了,这根本不应该影响到这一点?在