辞書としては、switch
という形で、辞書にはブール値を設定するのが好きです。例:else
/default
場合など辞書をPython 2.7.3のswitch文として使用する
>>> def f(a):
... return {True: -a, a==0: 0, a > 0: a}[True]
...
>>> f(-3)
3
>>> f(3)
3
>>> f(0)
0
キーTrue
作品や、他のキーがTrue
に評価されていない場合にのみ返されます。私はこれを推測していますが、辞書を反復するための何らかの評価順序を前提としています。
は今枝2.6、2.7、3.1および3.2の最新バージョンの最新release announcement from the Python teamから次の抜粋を見て:
ハッシュのランダム化がdictsの反復順序を引き起こし、 予測不可能であることを設定し、異なりますPythonを実行している間。 Pythonは、dictまたはset内のキーの反復順序を と決して保証しておらず、アプリケーション は決してそれに依存しないように勧められます。歴史的には、辞書の反復順序 はリリース間で頻繁に変更されておらず、Pythonの連続実行間では常に のままです。したがって、一部の 既存のアプリケーションは、dictまたはset orderingに依存している可能性があります。
これは、スイッチ呼び出しとしてdictsを使用することはもはや不可能であるということですか?あるいは、別のクラス(OrderedDict
など)を使用する必要がありますか?または、私は完全にオフになっていて、これはまったく影響しませんか?
スニペットに_iteration_はありません。あなたは影響を受けません。 – georg