gpt4 book ai didi

python - 计算python字典中某个值出现的次数?

转载 作者:太空狗 更新时间:2023-10-29 22:03:59 24 4
gpt4 key购买 nike

如果我有这样的东西:

D = {'a': 97, 'c': 0 , 'b':0,'e': 94, 'r': 97 , 'g':0}

例如,如果我想计算“0”的出现次数作为一个值,而不必遍历整个列表,这是否可能以及如何实现?

最佳答案

THIS ANSWER 中所述使用 operator.countOf()是要走的路,但您也可以在 sum() 函数中使用生成器,如下所示:

sum(value == 0 for value in D.values())
# Or the following which is more optimized
sum(1 for v in D.values() if v == 0)

或者作为一种稍微更优化和更实用的方法,您可以通过将整数的 __eq__ 方法作为构造函数传递来使用 map 函数。

sum(map((0).__eq__, D.values()))

基准:

In [15]: D = dict(zip(range(1000), range(1000)))

In [16]: %timeit sum(map((0).__eq__, D.values()))
49.6 µs ± 770 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [17]: %timeit sum(v==0 for v in D.values())
60.9 µs ± 669 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [18]: %timeit sum(1 for v in D.values() if v == 0)
30.2 µs ± 515 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [19]: %timeit countOf(D.values(), 0)
16.8 µs ± 74.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

请注意,虽然在这种情况下使用 map 函数可能会更优化,但为了对这两种方法有更全面和通用的了解,您还应该为相对较大的数据集运行基准测试.然后,您可以根据您拥有的数据结构和数量使用最合适的方法。

关于python - 计算python字典中某个值出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com