2016-09-01 2 views
0

Pythonで式を繰り返す最も無邪気な方法は何ですか?Pythonで式を繰り返す/展開する方法

コンテキスト:関数は、(おそらく20の要素を持つ)辞書を通過しつつあると私は、彼らがが存在する場合、この辞書から値を抽出して使用する必要があります。このような何か:

x = dict_name['key1'] if dict_name['key1'] else '' 

は、代わりにすべての20個の異なる鍵のために、このロジックを20回書き込むので、私は1つの場所でこの表現を定義し、それを繰り返し使用したいです。将来的には維持しやすくなります。 "C/C++"プログラミング言語では、#defineまたはinline関数の良いケースになります。 Pythonでこれを行うPythonの方法は何でしょうか?

あなたが推測したように、私はPythonの初心者です。ですから、これをPythonで構築するためのポインタやポインタについて、あなたの助けに感謝します。

+0

これはラムダ関数のユースケースですか? – ViFI

+2

get_val =ラムダキー:dict_name.get(key、 '') – sisanared

+1

それは何のための機能です。 – BrenBarn

答えて

0

Pythonでinlineと同等のものがあるかどうかは、誰が尋ねるのか、また何を確認するのかによって異なります。ノー同等の、例えばのために

:同等の場合https://stackoverflow.com/a/6442497/2707864

、例えば:https://www.safaribooksonline.com/library/view/python-cookbook-3rd/9781449357337/ch07s06.html

実用的な観点からは、lambdaは、トリックを行うだろう(dict.getがあなたの三条件演算子を置き換える)

dict_get = lambda key : dict_name.get(key, '') 

または、常に1行の関数を定義することができます。

def dict_get(key) : dict_name.get(key, '') 

Pythonicityはかなり(しばしば?)主観的です。

+0

ラムダ関数を名前に割り当てることは[PEP8](https://www.python.org/dev/peps/pep-0008/#programming-recommendations)に反するという意味ではPythonicではありません。 –

関連する問題