おそらく、私はBrand Xプログラミング言語に甘んじているかもしれませんが、次の点でより良いpythonicイディオムがありますか?Python辞書のエントリを作成または更新する
thing_dict = {}
def find_or_create_thing(key):
if (thing_dict.has_key(key)):
thing = thing_dict[key]
else:
thing = create_new_thing(key)
thing_dict[key] = thing
return thing
これは1〜2行で実行できるようです。私はConditional Expressionを使うことを考えましたが、Pythonの奇妙な構文は単に読みやすくするためのものではありませんでした。
また、私はtry: ... except KeyError:
と考えましたが、それはちょうど同じくらいの量のテキストであり、おそらくかなりのオーバーヘッドです。
P.S.私はS.Oについてプログラミングスタイルの質問をすることを知っています。問題があるが、私は自分のチャンスを取るよ...
もう1つはineffです'create(new)'が 'get()'のそれぞれに対して呼び出されるので、望ましくない副作用を引き起こす可能性があります。 –
2番目のアプローチの問題は、 'create_new_thing(key)'は常に –
と呼ばれています。 – alexisdevarennes