繁体   English   中英

如何创建一个整数列表,它是dict中一组列表中所有整数的总和?

[英]How to make a list of integers that is the sum of all the integers from a set of lists in a dict?

假设我创建了一个由n个键组成的字典。 每个键都映射到一致长度的整数列表。 我现在要做的是一个新列表,它表示dict列表中每个点的整数之和。 为了显示:

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)

数据已准备好求和(即使按不同的顺序,但我们不关心,因为加法是可交换的:))

根据您的使用情况,您可能需要考虑使用适当的库来实现更一般/复杂的功能。

numpy:一般科学计算

import numpy as np

my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}

arr = np.array(list(d.values()))
# [[1 2 3 4]
#  [2 3 4 5]
#  [3 4 5 6]]

arr.sum(axis=0)
# [ 6  9 12 15]

pandas:数据分析工具包

import pandas as pd

my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}

df = pd.DataFrame(my_dict)
#    a  b  c
# 0  1  2  3
# 1  2  3  4
# 2  3  4  5
# 3  4  5  6

df.sum(axis=1)
# 0     6
# 1     9
# 2    12
# 3    15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM