>>> L = [('2015-11-01', 'id123', 'impressions', '8'), ('2015-11-01', 'id123',
... 'clicks', '4'), ('2015-11-01', 'id456', 'impressions', '14'),
... ('2015-11-01', 'id456', 'clicks', '9')]
>>> from collections import defaultdict
>>> D = defaultdict(list)
>>> for a, b, c, d in L:
... D[a, b].append(d)
...
>>> [k + tuple(D[k]) for k in D]
[('2015-11-01', 'id456', '14', '9'), ('2015-11-01', 'id123', '8', '4')]
在这种情况下是展示和点击次数不是在一个一致的顺序
>>> L = [('2015-11-01', 'id123', 'impressions', '8'), ('2015-11-01', 'id123', 'clicks', '4'), ('2015-11-01', 'id456', 'clicks', '9'), ('2015-11-01', 'id456', 'impressions', '14')]
>>> from collections import defaultdict
>>> D = defaultdict(lambda: [None, None])
>>> for a, b, c, d in L:
... D[a, b][c == 'clicks'] = d
...
>>> [k + tuple(D[k]) for k in D]
[('2015-11-01', 'id456', '14', '9'), ('2015-11-01', 'id123', '8', '4')]
我不能明白的结果,可你把在其他的话呢? – RafaelC
结果列表需要遵循“字段”结构。符合'日期'和'身份证'。 “展示次数”和“点击次数”这几个字词是按顺序排列的,因此可以认为“8”是“展示次数”,“4”是点击次数。 – PieCharmed