python字典统计数量 python统计字典中key个数

您所在的位置:网站首页 统计某字符串中汉字的个数 python字典统计数量 python统计字典中key个数

python字典统计数量 python统计字典中key个数

2023-06-15 22:02| 来源: 网络整理| 查看: 265

保持简单

如果我们知道所有的值都是字典,并且不希望检查它们的任何值是否也是字典,那么它就像下面这样简单:

len(dict_test) + sum(len(v) for v in dict_test.itervalues())

细化它一点,实际上在计数前检查值是否是字典:

len(dict_test) + sum(len(v) for v in dict_test.itervalues() if isinstance(v, dict))

最后,如果你想做一个任意深度,像下面的东西:

def sum_keys(d): return (0 if not isinstance(d, dict) else len(d) + sum(sum_keys(v) for v in d.itervalues()) print sum_keys({'key2': {'key_in3': 'value', 'key_in4': 'value'}, 'key1': {'key_in2': 'value', 'key_in1': dict(a=2)}}) # => 7

在后一种情况下,我们定义一个将被递归调用的函数。给定值d,我们返回:

> 0如果该值不是字典;要么

>字典中的键数量,加上我们所有子代码中键的总数。

使它更快

以上是一个简洁和容易理解的方法。我们可以使用发电机得到一点快:

def _counter(d): # how many keys do we have? yield len(d) # stream the key counts of our children for v in d.itervalues(): if isinstance(v, dict): for x in _counter(v): yield x def count_faster(d): return sum(_counter(d))

这让我们更多的性能:

In [1]: %timeit sum_keys(dict_test) 100000 loops, best of 3: 4.12 µs per loop In [2]: %timeit count_faster(dict_test) 100000 loops, best of 3: 3.29 µs per loop



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3