【发布时间】:2016-05-23 17:41:59
【问题描述】:
继this 问题之后,我现在需要汇总整个元组中的相似条目(元组)。
所以给定一个元组,例如:
T = (('a', 'b', 2),
('a', 'c', 4),
('b', 'c', 1),
('a', 'b', 8),)
对于第一个和第二个元素相同的所有元组,我想对第三个元素求和,否则,保留元组。所以我最终会得到以下元组:
(('a', 'b', 10),
('a', 'c', 4),
('b', 'c', 1),)
封闭元组中元组的顺序(和求和)无关紧要。
我们正在处理元组,所以我们不能利用像 dict.get() 这样的东西。如果我们走defaultdict 路线:
In [1218]: d = defaultdict(lambda: defaultdict(int))
In [1220]: for t in T:
d[t[0]][t[1]] += t[2]
......:
In [1225]: d
Out[1225]:
defaultdict(<function __main__.<lambda>>,
{'a': defaultdict(int, {'b': 10, 'c': 4}),
'b': defaultdict(int, {'c': 1})})
我不太确定如何将其重构为元组。无论如何,尽管每个元组中三个元素的顺序是一致的,但我对元组的索引并不满意。这可以在不转换为其他数据类型的情况下完成吗?
【问题讨论】:
标签: python python-2.7 tuples