Lambda表达式在列表中理解Python

时间:2017-08-27 12:56:43

标签: python mongodb lambda

所以我有我的pymongo游标和非常简单的循环来获得总和。我需要获取该值,我也是Mongo的新手,我的方法可能不是最好的做法。

cursor = db.reportsColl.aggregate([
        {"$unwind": "$conditions"},
        {"$group": {"_id": "$_id", "sum": { "$sum": 1}}}])


x = 0
for result in cursor:
    x+= result['sum']
print(x)

我试图在这里使用lambda表达式,但我觉得我有点失落。

total = [(lambda x: x+result['sum'])(x) for _ in cursor]

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在构建一个不完整总和的列表,这是一种浪费。不要对列表效果使用列表理解。

你甚至不需要这样做。请使用sum() function代替generator expression

total = sum(result['sum'] for result in cursor)

答案 1 :(得分:0)

你唯一想做的就是SUM。

所以,你可以尝试这样做:

In [9]: sum([1, 2, 3])
Out[9]: 6`

因此,通过这种方式,您的代码可以像:

total = sum([result['sum'] for result in cursor])