我在 Python 2.7 中有一本字典。
我需要快速计算所有键的数量,包括每个词典中的键。
所以在这个例子中,我需要所有键的数量都是 6:
dict_test = {'key2': {'key_in3': 'value', 'key_in4': 'value'}, 'key1': {'key_in2': 'value', 'key_in1': 'value'}}
我知道我可以使用 for 循环遍历每个键,但我正在寻找一种更快的方法来执行此操作,因为我将拥有数千/数百万个键并且这样做是无效的:
count_the_keys = 0
for key in dict_test.keys():
for key_inner in dict_test[key].keys():
count_the_keys += 1
# something like this would be more effective
# of course .keys().keys() doesn't work
print len(dict_test.keys()) * len(dict_test.keys().keys())
原文由 Ivan Bilan 发布,翻译遵循 CC BY-SA 4.0 许可协议
保持简单
如果我们知道所有的值都是字典,并且不想检查它们的任何值也是字典,那么它就像这样简单:
稍微改进一下,在计算值之前实际检查值是否为字典:
最后,如果你想做一个任意深度,像下面这样:
在最后一种情况下,我们定义了一个将被递归调用的函数。给定一个值
d
,我们返回:0
如果该值不是字典;或者让它更快
以上是一种简洁易懂的方法。我们可以使用生成器更快一点:
这让我们获得了更多的性能: