2

查找 2D 字典大小的有效方法是什么?我目前正在使用这个 oneliner:

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

有没有更好的办法?

4

1 回答 1

0

如果您假设 2D 字典是标准的 Python 字典,其中的值又是 Python 字典,那么没有比迭代这些值更有效的方法了。

但是,如果将 2D 字典定义为实现了几个特殊命名方法的类的某个实例Dict2D,并且其值不是 'normal' dicts,而是一些dict类似的类,它们足够聪明,可以更新其 parent 的“大小” Dict2D,那么你就可以做到:

d2d = Dict2D()
# various assignments and updates ..
d2d['abc']['def'] = 1
d2d['ghi'] = {x = 4, y = 3}
d2d['abc'] = dict(klm=8, answer=42)
....
print d2d.size()

实现这样的 a 是否有意义Dict2D取决于您希望它有多透明,以及您是否需要在更改之间足够频繁地计算大小。

于 2013-05-02T09:21:16.147 回答