求人広告のDjangoWebサイトプロジェクトの場合、(user_id, ad_id)
ペアで構成されたタプルのリストがあります。これは、クリッカーのuser_id
、および関連するを示しad_id
ます。
例えば:
gross_clicks = [(1, 13),(1, 12), (1, 13), (2, 45), (2, 13), (1, 15), ...(n, m)]
このリストの要素は決して一意ではありません。同じユーザーによるものか、同じ広告上にあるかに関係なく、クリックごとにこのリストにプッシュされます。
これで、次のようにして、すべての固有のクリックを取得できます。
unique_clicks = []
import operator
gross_click_ids = map(operator.itemgetter(0), gross_clicks)
return len(set(gross_click_ids))
しかし、広告ごとに一意のクリックを取得するにはどうすればよいですか?つまり、同じユーザーが2つの異なる広告をクリックした場合、2回の個別のクリックとしてカウントされます。
パフォーマンスも重要です-それは大きなデータセットです-したがって、説明的な例とともに、最も効率的なソリューションを好むでしょう。
ユニークなタプルを取るだけです:
unique_clicks = set(gross_clicks)
これにより、広告ごとのユニークユーザーインプレッションのセットが得られます。
サンプル入力では、(1, 13)
は2回表示されますが、セットでは1回だけ表示されます。
>>> gross_clicks = [(1, 13), (1, 12), (1, 13), (2, 45), (2, 13), (1, 15)]
>>> set(gross_clicks)
{(1, 12), (1, 13), (1, 15), (2, 45), (2, 13)}
入力としてタプルの大規模なリストが与えられた場合、セットを使用して一意の要素を追跡することは、可能な限り効率的です(特定のタプルがすでにセットに含まれているかどうかのテストは、O(1)一定時間操作です)。
ただし、このデータがデータベースからのものである場合は、代わりに一意のペアを提供するように依頼する方が効率的です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加