2

我有一本字典,其中每个键都有一个项目列表(向量):

from collections import defaultdict
dict = defaultdict(list)
dict[133] = [2,4,64,312]
dict[4] = [2,3,5,12,45,32]
dict[54] = [12,2,443,223]

def getTotalVectorItems(items):
  total = 0
  for v in items.values():
    total += len(v)
  return total

print getTotalVectorItems(dict)

这将打印:

14 # number of items in the 3 dict keys.

除了创建这个“getTotalVectorItems”函数之外,还有更简单的 Pythonic 方式吗?我觉得已经有一种快速的方法可以做到这一点。

4

2 回答 2

7

您正在寻找带有生成器表达式sum()内置函数:

sum(len(v) for v in items.values())

sum()函数对给定迭代器的值求和,生成器表达式产生列表中每个值的长度。

请注意,调用列表向量可能会让大多数 Python 程序员感到困惑,除非您在问题领域的上下文中使用术语向量。

于 2013-02-12T20:19:20.390 回答
1
print sum(map(len,dic.itervalues()))
于 2013-02-12T20:33:11.623 回答