【发布时间】:2016-09-17 10:21:40
【问题描述】:
我有可以以两种不同形式表示的数据(出于历史原因,我不会深入探讨)。第一个是tuples 的tuple:
t = (('a', 'x', 3),
('a', 'f', 1),
('b', 'r', 23),
('b', 'e', 3))
第二个是dict 的dicts:
d = {'a' : {'x': 45, 'f' : 4},
'b' : {'r' : 34, 'e' : 45}}
相同的数据,不同的表示。我现在需要将两者结合起来(并且必须保持元组形式而不是嵌套的 dict 形式),其值为 summed。即
(('a', 'x', 48),
('a', 'f', 5),
('b', 'r', 57),
('b', 'e', 48))
这似乎是一个两步过程(将嵌套的字典转换为元组的元组,然后将每个元组中的相应元组相加)。我正在努力通过第一部分,我缺少两个元组(我也不喜欢我如何硬编码索引):
In [1025]: def f(d):
for k, v in d.items():
yield (k, d[k].keys()[0], d[k].values()[0])
......:
In [1026]: for i in f(d):
print i
......:
('a', 'x', 45)
('b', 'r', 34)
有什么更好的方法?
【问题讨论】:
-
元组是否有序?
-
对于周围元组中的各个元组,是的,顺序很重要。至少,在我的代码的其他地方,我已经根据元组中元素的位置进行了硬编码,这很重要,这可能不是最好的方法。
标签: python python-2.7 dictionary casting tuples