是否可以编写filter
或map
作为单行代码执行以下操作?
formatted_data = []
for hit in res['hits']['hits'][:201]:
src = hit['_source']
formatted_data.append({
'path': src['path'],
'size': src['size'],
'last_modified': dateutil.parser.parse(src['last_modified']).date()
})
答案 0 :(得分:2)
这将是非常丑陋的:
formatted_data = [ {
'path': hit['_source']['path'],
'size': hit['_source']['size'],
'last_modified': dateutil.parser.parse(hit['_source']['last_modified']).date()
} for hit in res['hits']['hits'][:201] ]
但是您可以根据需要将其拉伸成一行。
答案 1 :(得分:2)
这是我想出的使用map和lamda函数的oneliner。但它的可读性较差
formatted_data=map(lambda x : {'path':x['_source']['path'],'size': x["_source"]['size'],'last_modified': dateutil.parser.parse(x["_source"]['last_modified']).date() },res['hits']['hits'][:201])
我认为,如果您真的想使用map,请编写另一个函数,使其更具可读性,例如
def returndict(x):
return {
'path':x['_source']['path'],
'size': x['_source']['size'],
'last_modified': dateutil.parser.parse(x['_source']['last_modified']).date()
}
print(map(returndict,res['hits']['hits'][:201])])
我想引用zen of python
美丽胜于丑陋。显式胜于隐式。
简单胜于复杂。复杂胜于复杂。
平面比嵌套更好。稀疏胜于密集。
可读性计数。