Python字典中多重值的计数

1 投票
3 回答
6038 浏览
提问于 2025-04-17 05:26

我有一个字典,每个键都有多个值。我想计算所有值的总数。比如:

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())

注意,这里使用了生成器,而不是先创建一个临时的长度列表。

撰写回答