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の最新バージョンについて、Pythonチームからの最新リリース発表からの次の抜粋を見てください。
ハッシュのランダム化により、dictとsetの反復順序が予測不能になり、Pythonの実行間で異なります。Pythonは、dictまたはset内のキーの反復順序を保証したことはなく、アプリケーションは決してそれに依存しないことをお勧めします。歴史的に、dictの反復順序はリリース間であまり頻繁に変更されておらず、Pythonの連続実行間で常に一貫性が保たれています。したがって、一部の既存のアプリケーションは、dictまたはsetの順序に依存している可能性があります。
これは、スイッチ呼び出しとしてdictを使用できなくなることを意味しますか?それとも、他のクラス(OrderedDict
または何か)を使用する必要がありますか?または多分私は完全にオフであり、それはこれにまったく影響を与えるべきではありませんか?