Bob*_*son 6 python dictionary list
假设我创建了一个由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
Run Code Online (Sandbox Code Playgroud)
预期产量:
total_sum_list = [6,9,12,15]
Run Code Online (Sandbox Code Playgroud)
如上所示,我不知道如何设置这个for循环,以便我可以创建一个类似的列表total_sum_list.我已经尝试过整理列表,但到目前为止我的努力还没有成功.有什么建议?
您需要的是转置列表,以便您可以对列进行求和.因此,使用zip字典值(键可以忽略)和sum列表理解:
在一行:
total_sum_list = [sum(x) for x in zip(*my_dict.values())]
Run Code Online (Sandbox Code Playgroud)
结果:
[6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)
工作原理:
zip交错值.我正在使用参数解包来传递dict值是参数zip(比如zip(a,b,c)).所以当你这样做时:
for x in zip(*my_dict.values()):
print(x)
Run Code Online (Sandbox Code Playgroud)
你得到(as tuple):
(1, 3, 2)
(2, 4, 3)
(3, 5, 4)
(4, 6, 5)
Run Code Online (Sandbox Code Playgroud)
数据已准备好求和(即使按不同的顺序,但我们不关心,因为加法是可交换的:))