python调用函数在get字典的方法而不是默认值

时间:2016-07-30 05:54:36

标签: python dictionary

需要一些帮助才能理解Python和get字典方法中的一些内容。

我们假设我们有一些字典列表,我们需要进行一些数据转换(例如,通过键'name'获取所有字典的所有名称)。如果在特定字典中找不到键func(data),我还可以调用某些特定函数'name'

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])

这种方法运作得相当好,但到目前为止,我可以看到函数func(来自retrieve_data每次调用,甚至还存在键'name'在字典中。

1 个答案:

答案 0 :(得分:2)

如果您想避免在字典包含值时调用func,可以使用:

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

每次在您的示例中调用func的原因是因为它在get被调用之前得到了评估。