我有一个这样的清单:
[(u'a', 0, 25), (u'a', 1, 11), (u'a', 3, 60), (u'a', 4, 89), (u'b', 0, 18),
(u'b', 1, 76), (u'b', 2, 52), (u'b', 3, 75), (u'b', 4, 46)]
我想从a和b中取出第0个元素,将它们相乘,将其添加到sum变量中。如果a或b中缺少一个项目(在此示例中为[2]),则表示为0。
我的方法:
但问题是我不能将0分配给不存在的索引(如[2])。有任何解决方案或更简单的方法吗?
答案 0 :(得分:1)
data = [(u'a', 0, 25), (u'a', 1, 11), (u'a', 3, 60), (u'a', 4, 89), (u'b', 0, 18),
(u'b', 1, 76), (u'b', 2, 52), (u'b', 3, 75), (u'b', 4, 46)]
d = {'a': {}, 'b': {}}
for x, y, z in data:
d[x][y] = z
>>> sum(d['a'].get(k, 0) * d['b'].get(k, 0)
for k in d['a'].viewkeys() | d['b'].viewkeys())
9880