python – 在For循环中添加List(我最初将List设置为什么?)

这是一个初学者的问题.

我将在他们的列表中有一个具有不同数量值的字典.

dict1 = {'a': [0,1,2], 'b': [3,4,5]}
dict2 = {'a': [0,1,2,3], 'b': [4,5,6,7]}

对于每个dict,列表中的项目数相同.

LEN(dict1['a']) == LEN(dict1['b'])
LEN(dict1['a']) != LEN(dict2['b'])

有了这个,这是我的问题.我试图将字典中的值一起添加.

dict1应该等于[3,5,7]

dict2应该等于[4,6,8,10]

到目前为止我的代码是这样的:

for x in dict1:
    results = [dict1[x][i] + results[i] for i in range(len(dict1[x]))]

我遇到的问题是结果[i].我在for子句之前创建此列表吗?

最佳答案 您可以使用map与operator.add:

>>> from operator import add
>>> map(add,*dict1.values())
[3, 5, 7]
>>> map(add,*dict2.values())
[4, 6, 8, 10]

或者如果您不想导入任何内容,则使用列表理解为zip

>>> [sum(x) for x in zip(*dict1.values())]
[3, 5, 7]
>>> [sum(x) for x in zip(*dict2.values())]
[4, 6, 8, 10]

更新:

def func(dic, *keys):
    return [sum(x) for x in zip(*(dic[k] for k in keys))]

>>> dict1 = {'a': [0,1,2], 'b': [3,4,5], 'c':[6,7,8]}
>>> func(dict1,'a')
[0, 1, 2]
>>> func(dict1,'a','b')
[3, 5, 7]
>>> func(dict1,'b','c')
[9, 11, 13]
>>> func(dict1,'b','c','a')
[9, 12, 15]
点赞