如何创建一个整数列表,该整数列表是字典中一组列表中所有整数的总和?
问题内容:
假设我创建了一个由n个键组成的字典。每个键都映射到长度一致的整数列表。我现在想做的是一个新列表,它表示字典列表中每个点的整数之和。为了显示:
my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}
total_sum_list = []
for key in my_dict.keys():
total_sum_list += ###some way of adding the numbers together
预期产量:
total_sum_list = [6,9,12,15]
如上所述,我不确定如何设置此for循环,以便创建类似的列表total_sum_list
。我曾经尝试过对列表进行理解,但是到目前为止,我的努力还没有成功。有什么建议?
问题答案:
您需要对列表进行转置,以便可以对列求和。因此,可以zip
在字典值(键可以忽略)和sum
列表理解中使用:
一行:
total_sum_list = [sum(x) for x in zip(*my_dict.values())]
结果:
[6, 9, 12, 15]
运作方式 :
zip
交织值。我正在使用参数解包将dict值传递给zip
(如zip(a,b,c)
)。因此,当您这样做时:
for x in zip(*my_dict.values()):
print(x)
您得到(作为tuple
):
(1, 3, 2)
(2, 4, 3)
(3, 5, 4)
(4, 6, 5)
数据已准备好进行求和(即使顺序不同,但我们也不在乎,因为加法是可交换的:)