我有一个字典,其中每个键都有多个值。 我正在尝试计算值的总数。 例如:
key: 1, value: abc, bcd, egf
key: 2, value: asj,asfah,afhs,jhsafh
所以,值的总数是3 + 4 = 7 什么是pythonic方法来计算这一点。 感谢
答案 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())