正如我在评论中提到的,您可以在sum()
函数内使用生成器,如下所示:
sum(value == 0 for value in D.values())
或者,作为一种稍微优化和实用的方法,您可以使用map
如下功能:
sum(map((0).__eq__, D.values()))
基准测试:
In [56]: %timeit sum(map((0).__eq__, D.values()))
1000000 loops, best of 3: 756 ns per loop
In [57]: %timeit sum(value == 0 for value in D.values())
1000000 loops, best of 3: 977 ns per loop
请注意,虽然map
在这种情况下使用函数可能会得到更好的优化,但是为了获得关于这两种方法的全面而通用的想法,您还应该针对较大的数据集运行基准测试。然后,您可以决定何时使用哪个以获得更高的性能。