与"What's the most concise way in Python to group and sum a list of objects by the same property"类似,我有一个脚本,需要在其中对对象列表的属性求和。不过,我的问题略有不同。在
我有一类具有属性V、W、X、Y和Z的对象。我需要遍历属性W、X和Y,并将其与所有其他相同的W、X和Y属性进行匹配来求和属性Z。生成一个由W、X和Y索引的新的和值
以下是对象的类:
class xb(object):
def __init__(self, V, W, X, Y, Z):
self.V = V
self.W = W
self.X = X
self.Y = Y
self.Z = Z
xbs = [xb()]
我最初的想法是通过一系列嵌套的if语句来实现这一点,但这大大降低了处理速度,我确信我的逻辑完全不正常。在
^{pr2}$如有任何建议,将不胜感激!在
这里有一个非常肮脏的一行代码:
我根本不建议这样做(调试很麻烦),但我认为这是一个有趣的解决方案
可以使用defaultdict执行此操作:
例如,如果从(使用
^{pr2}$xb
的类定义)开始:你最终会得到:
因此,可以得到W,X,Y的和为2,3,4:
注意,
defaultdict
在这里做的工作非常少(它只是一个默认从0开始的计数字典):主要的事情是您正在为字典中的(o.W, o.X, o.Y)
元组建立索引。如果没有defaultdict
,您可以做同样的事情:defaultdict
只为您节省了两行代码。在相关问题 更多 >
编程相关推荐