查找 2D 字典大小的有效方法是什么?我目前正在使用这个 oneliner:
sum((len(v) for v in d.itervalues()))
有没有更好的办法?
查找 2D 字典大小的有效方法是什么?我目前正在使用这个 oneliner:
sum((len(v) for v in d.itervalues()))
有没有更好的办法?
如果您假设 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
取决于您希望它有多透明,以及您是否需要在更改之间足够频繁地计算大小。