如何将一个列表中的项目分别相加,使之成为一个列表?

2024-03-29 14:52:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,它的值是一个列表。我想把清单1中的第一项和清单2中的第一项加起来。。。。到最后,然后对所有项目执行此操作。最后,我将有一个列表作为dict的值。所有列表的长度都相同。你知道吗

my_dict = {'r1': [[0,1,0,1],[1,1,0,1],[0,1,1,1],[1,0,0,1]] , 'r2' : [[1,0,0,0],[1,1,0,0],[0,1,1,0],[1,0,0,1]]}

结果:

   my_dict = {'r1':[2,3,1,4], 'r2' : [3,2,1,1]}

Tags: 项目列表字典mydictr2r1
3条回答

您可以尝试:

my_dict = {'r1': [[0,1,0,1],[1,1,0,1],[0,1,1,1],[1,0,0,1]] , 'r2' : [[1,0,0,0],[1,1,0,0],[0,1,1,0],[1,0,0,1]]}

print({i:map(lambda x:sum(x),zip(*j)) for i,j in my_dict.items()})

输出:

{'r1': [2, 3, 1, 4], 'r2': [3, 2, 1, 1]}

使用numpy这个操作会简单得多。你知道吗

你可以这样做:

import numpy as np
result = {}
for k in my_dict:
    v = np.array(my_dict[k]).sum(axis=0).tolist()
    result[k] = v

你可以使用听写理解:

new_dict = {k: list(map(sum, zip(*v))) for k, v in my_dict.items()}

这里的关键思想是zip(*v),它将列表列表转换为第i个元素的列表:

zip(*[[1,2,3,4], [5,6,7,8]])   # returns [[1, 5], [2, 6], [3, 7], [4, 8]]

相关问题 更多 >