字典python中多个值的计数

时间:2011-11-01 20:45:57

标签: python dictionary

我有一个字典,其中每个键都有多个值。 我正在尝试计算值的总数。 例如:

key: 1, value: abc, bcd, egf
key: 2, value: asj,asfah,afhs,jhsafh

所以,值的总数是3 + 4 = 7 什么是pythonic方法来计算这一点。 感谢

3 个答案:

答案 0 :(得分:7)

怎么样:

sum(len(val) for val in dictionary.itervalues())

请注意,这使用生成器而不是创建临时长度列表。

答案 1 :(得分:4)

您需要遍历字典中的所有键和值,找到每组值的长度。

以下使用列表推导来构建所有这些长度的列表,然后得到它们的总和:

sum([len(value) for key, value in my_dict.iteritems()]) 

如果您想提高效率,可以将for key, value in my_dict.iteritems()替换为for value in my_dict.itervalues(),并使用Cameron建议的使用生成器表达式。

答案 2 :(得分:2)

如果您确定 dict中的每个值都是一个列表,那么这可行:

sum(len(val) for val in d.itervalues())

如果没有,需要更多的关注,可能还需要更多信息。例如,字符串也有len(字符串中的字符数)。您可能希望字符串计为1个条目,而不是与长度成比例的计数。如果是这样,这个不太可读的版本可以工作:

sum(1 if isinstance(val, basestring) else len(val) for val in d.itervalues())