矩阵中根据条件求和?

问题描述

矩阵如下:

1,2017,2,5
1,2018,1,5
1,2018,2,4
2,2017,1,5
1,2018,1,2

根据前三列分出三种,产生新的矩阵:

1,2017,2,5
1,2018,1,7
1,2018,2,4
2,2017,1,5

少了一行,是因为只要前三列相同,那第四列求和,2+5=7

如何计算?

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 4.1k
1 个回答

就是分组求和的思想。

m = [[1,2017,2,5],[1,2018,1,5],[1,2018,2,4],[2,2017,1,5],[1,2018,1,2]]

# 先建立个dict,
# 前三项作为key, 第四项作为value
d = dict()
for i in m:
    d_key = tuple(i[:-1])
    d_value = i[-1]
    if d_key not in d:
        d.update({d_key:d_value})
    else:
        d[d_key] += d_value
        
 # 再把dict转为数组
result = list()
for d_key,d_value in d.items():
    tmp = list(d_key)
    tmp.append(d_value)
    result.append(tmp)
print(result)   

result就是:

[[1, 2018, 2, 4], [1, 2018, 1, 7], [2, 2017, 1, 5], [1, 2017, 2, 5]]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题