Python字典中多重值的计数
我有一个字典,每个键都有多个值。我想计算所有值的总数。比如:
key: 1, value: abc, bcd, egf
key: 2, value: asj,asfah,afhs,jhsafh
所以,值的总数是3+4=7。请问用Python有什么好的方法来计算这个总数呢?谢谢!
3 个回答
2
如果你确定字典中的每个值都是一个列表,那么这样做是可以的:
sum(len(val) for val in d.itervalues())
如果不是,那就需要多花点心思,可能还需要更多的信息。比如,字符串也有一个len
(就是字符串中字符的数量)。你可能希望字符串只算作1个条目,而不是根据长度来计算。如果是这样的话,下面这个可读性稍差的版本可以使用:
sum(1 if isinstance(val, basestring) else len(val) for val in d.itervalues())
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所建议的那样。
7
这样怎么样:
sum(len(val) for val in dictionary.itervalues())
注意,这里使用了生成器,而不是先创建一个临时的长度列表。