0

私はPythonが初めてなので、ご容赦ください。

値を印刷しようとするとFUNNEL_STEP_ARRAY値を返すという名前の配列があります。ただし、ループごとiにクエリ結果を返したいと考えています。for (i)

for i in FUNNEL_STEP_ARRAY:
    print (i) #prints the step name
    y = db.external_funnel.find(
    {"step_id":"\i", "client_timestamp": {"$regex": "2013-10-25T"},
    "application_id":"6083502215600857441"
    }).distinct("user_id")
    print(len(y))

配列の最後のステップの名前を出力すると、適切な応答が返されますが、上記の各ループのクエリに入力する適切な方法がわかりません。

y = db.external_funnel.find(
{"step_id":"Tutorial.TAttackScreen.End", "client_timestamp": {"$regex": "2013-10-25T"},
"application_id":"6083502215600857441"
}).distinct("user_id")

print(y) ['11856662934482915056', '6822304154484365317', '16907601980584545477', '7754468465932591739', '4035769163970893047', '1722852941393395710', '16289507963782337913', '12342123419828328163', '15183373460796791586', '3923264265959269816', '8842662517796204109', ' 1330883712013359625', '6130265032042700646', '3280282641258166143', '18002035489108466380', '8584675150263264823', '13183853476835939343', '12332104951386419645', '3477173628398869287', '8625222330019018139', '1937123521362305652', '11430291986398375763', '8051074243207166456', '17635653501888308620' ] print(len(y)) 24

理想的には、次のような各 (i) の出力を探しています。

チュートリアル.TAtackScreen.End 24

4

1 に答える 1

0

現在、 for ループ内で、 を実行してい"step_id": "\i"ます。これは文字通り、ステップ ID を「バックスラッシュ i」の文字にしたいということです。代わりに、単純に次のようにして変数の内容を使用します。

for i in FUNNEL_STEP_ARRAY:
    y = db.external_funnel.find({
        "step_id": i, 
        "client_timestamp": {"$regex": "2013-10-25T"},
        "application_id":"6083502215600857441"
    }).distinct("user_id")
    print(len(y))

注: 変数にはより明示的な名前を使用する方が適切な場合がありiます。例えば:

for step_id in FUNNEL_STEP_ARRAY:
    y = db.external_funnel.find({
        "step_id": step_id, 
        "client_timestamp": {"$regex": "2013-10-25T"},
        "application_id":"6083502215600857441"
    }).distinct("user_id")
    print(len(y))
于 2013-10-29T17:37:09.583 に答える