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()中进行迭代? 任何其他解决方案都将完全使用
答案 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)}