需要一些帮助才能理解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'
在字典中。
答案 0 :(得分:2)
如果您想避免在字典包含值时调用func
,可以使用:
def retrieve_data(value):
return ', '.join([v['name'] if 'name' in v else func(v) for v in value])
每次在您的示例中调用func
的原因是因为它在get
被调用之前得到了评估。