Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加到For循环上的列表(我最初应该将列表设置为什么?)_Python_Python 3.x - Fatal编程技术网

Python 添加到For循环上的列表(我最初应该将列表设置为什么?)

Python 添加到For循环上的列表(我最初应该将列表设置为什么?),python,python-3.x,Python,Python 3.x,这是一个初学者的问题 我将有一个字典,在它们的列表中有不同数量的值 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应等于

这是一个初学者的问题

我将有一个字典,在它们的列表中有不同数量的值

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子句之前创建此列表

您可以将
映射
操作符一起使用。添加

>>> from operator import add
>>> map(add,*dict1.values())
[3, 5, 7]
>>> map(add,*dict2.values())
[4, 6, 8, 10]
或者,如果您不想导入任何内容,请使用
列表理解

>>> [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]
使用
zip
:和


这实际上是家庭作业,所以我不能导入任何内容。@Neil我添加了另一个解决方案,它不使用导入:我得到的是:AttributeError:'dict'对象没有属性'itervalues'。顺便说一下,我正在使用Python3.3.2。@Neil看起来您正在使用py3.x,解决方案已更新。现在它可以在py2.x和3.x上运行了。非常感谢。我的家庭作业是找到民主党参议员的平均投票记录,在你的帮助下,我可以一行就完成。
>>> dict1 = {'a': [0,1,2], 'b': [3,4,5]}
>>> dict2 = {'a': [0,1,2,3], 'b': [4,5,6,7]}

>>> zip(dict1['a'], dict1['b'])
[(0, 3), (1, 4), (2, 5)]

>>> [x+y for (x,y) in zip(dict1['a'], dict1['b'])]
[3, 5, 7]
>>> list(map(sum, zip(*dict1.values()))) #py3.x
[3, 5, 7]
>>> 
>>> map(sum, zip(*dict2.values())) #py2.x
[4, 6, 8, 10]
>>>