2016-07-30 7 views
0

Pythonのいくつかのことを理解するための助けやget辞書のメソッドが必要です。Pythonで関数を呼び出す代わりに辞書のメソッドを取得するデフォルト値

辞書のリストがあり、データ変換を行う必要があるとします(たとえば、すべての辞書のすべての名前をキー'name'で取得する必要があります)。特定のdictにキー'name'が見つからなかった場合は、何らかの特定の機能をfunc(data)と呼びます。

def func(data): 
    # do smth with data that doesn't contain 'name' key in dict 
    return some_data 

def retrieve_data(value): 
    return ', '.join([v.get('name', func(v)) for v in value]) 

このアプローチ

はかなりうまく動作しますが、私の知る限りでは( retrieve_dataから)関数 func 呼び出したび'name'が辞書に存在していても、キーを見ることができます。あなたは辞書に値が含まれている場合 funcを呼び出さないようにしたい場合は

答えて

2

、あなたはこれを使用することができます。

def retrieve_data(value): 
    return ', '.join([v['name'] if 'name' in v else func(v) for v in value]) 

理由funcはあなたの例では毎回呼ばれている、それも呼び出されるget前に評価されますので、 。

関連する問題