加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:28:15 所属栏目:Python 来源:网络整理
导读:这是一个初学者的问题. 我将在他们的列表中有一个具有不同数量值的字典. dict1 = {'a': [0,1,2],'b': [3,4,5]}dict2 = {'a': [0,2,3],'b': [4,5,6,7]} 对于每个dict,列表中的项目数相同. LEN(dict1['a']) == LEN(dict1['b'])LEN(dict1['a']) != LEN(dict2['b
这是一个初学者的问题.

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

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

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

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

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

dict1应该等于[3,7]

dict2应该等于[4,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,7]
>>> map(add,*dict2.values())
[4,10]

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

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

更新:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读