这是数据
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=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中实现
我想我找到了答案
解决方案
我不知道字典通常会有多大。但是您可以使用
pandas
作为替代方案。下面的代码块将按照您的说明处理所有数据输出:
资料
相关问题 更多 >
编程相关推荐