1

以下のようなハッシュのリストがあります。

   [{'campaign_id': 'cid2504649263',
  'country': 'AU',
  'impressions': 3000,
  'region': 'Cairns',
  'utcdt': datetime.datetime(2013, 6, 4, 6, 0)},
 {'campaign_id': 'cid2504649263',
  'country': 'AU',
  'count': 9000,
  'region': 'Cairns',
  'utcdt': datetime.datetime(2013, 6, 4, 6, 0)},
 {'campaign_id': 'cid2504649263',
  'country': 'AU',
  'count': 3000,
  'region': 'Cairns',
  'utcdt': datetime.datetime(2013, 6, 4, 7, 0)}]

すべてのディメンションが同じであり、カウントを合計する必要があるため、2 つのハッシュをロールアップする必要があります。では... itertools で python groupby を使用してこのタスクを達成するにはどうすればよいでしょうか? 他の手段は?

   rolled_up = [{'campaign_id': 'cid2504649263',
  'count': 12000,
  'region': 'Cairns',
  'utcdt': datetime.datetime(2013, 6, 4, 6, 0)},
 {'campaign_id': 'cid2504649263',
  'country': 'AU',
  'count': 3000,
  'region': 'Cairns',
  'utcdt': datetime.datetime(2013, 6, 4, 7, 0)}]
4

2 に答える 2

0

すべてのディメンションが同じであり、カウントを合計する必要があるため、2 つのハッシュをロールアップする必要があります。

それだけでよろしければ、次の方法はいかがですか。

from collections import defaultdict

d = defaultdict(int)

for i in hashes:
   d[i['campaign_id'],i['region']] += i['count']

for k in d:
    print k[0],d[k]
于 2013-06-12T07:03:40.630 に答える