使用zip()的python中的元组总和

时间:2019-01-23 20:39:54

标签: python

source: 'company'

上面是示例python字典,我想获取输出,以便应在字典中添加元组元素并使之具有单个元组。下面是必需的输出

  'ABX': [(1, 9)],
  'ABD': [(4, 1)],
  'ABY': [(9, 1), (10, 1), (2, 2)],
  'ABR': [(8, 2), (8, 3)]}

我尝试使用下面的python shell dict0中的元素(ABR)代码

  'ABX': [(1, 1)],
  'ABD': [(4, 1)],
  'ABY': [(21, 4)],
  'ABR': [(16, 5)]}
   }
    >>>test = [sum(x) for x in zip([ i for i in dict['ABR'])]
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

这给出一个元组,如何在zip()中进行迭代? 任何其他解决方案都将完全使用

2 个答案:

答案 0 :(得分:4)

您可以对所有由生成器表达式求和的值使用dict理解:

{k: tuple(sum(t) for t in zip(*l)) for k, l in dict0.items()}

这将返回:

{'ABX': (1, 9), 'ABD': (4, 1), 'ABY': (21, 4), 'ABR': (16, 5)}

答案 1 :(得分:1)

使用基本的for循环

import operator
d={ 'ABX': [(1, 9216)],
  'ABD': [(4, 15360)],
  'ABY': [(9, 11264), (10, 1024), (14, 451584)],
  'ABR': [(18, 738304), (9, 369664)]}

现在用汇总值更新字典

for k,v in d.items():
    sum_tup =(0,0)
    for i in v:
         sum_tup=tuple(map(operator.add, sum_tup, i))
    d[k]=sum_tup

输出

{'ABD': (4, 15360),
 'ABR': (27, 1107968),
 'ABX': (1, 9216),
 'ABY': (33, 463872)}