【发布时间】:2020-09-26 12:29:21
【问题描述】:
这是数据。
day_value = {
'android':[1,0,0,0,0,0,1],
'iphone':[0,1,0,1,0,0,0],
'web':[0,1,1,0,1,0,0],
}
device_rollup = {
'overall':['iphone','android','web'],
'mobile':['iphone','android'],
}
rollup_l7 = {
'overall': 6,
'mobile': 4,
}
如果每一列的值都相同,我们必须汇总为 1 而不是将其相加。总数应为 6 ((1,0,0)+(0,1,1)+(0,0,1)+(0,1,0)+ (0,0,1)+ (1 ,0,0)-> 1+1+1+1+1+1 =6)
现在我可以像这样将所有值相加。
overall_val = sum(sum(v) for k,v in day_value.items() if k in device_rollup['overall'] )
mobile_val = sum(sum(v) for k,v in day_value.items() if k in device_rollup['mobile'] )
rollup_l7= {'overall':overall_val, 'mobile':mobile_val}
print(rollups_l7)
但是,我不想累加,而是想累加每个列值。
我们需要将列表转换为二进制然后再转换回整数吗?
我不太确定如何在不使用 numpy 的情况下在常规 python 中实现
【问题讨论】:
-
请用一个例子解释你期望的输出。
-
@CypherX - 使用示例更新了详细信息
-
据我所知,如果任何行有 1,则需要加 1。这样是否正确?
-
一种。它是灯中每个值的二进制或