我正在使用python字典來計算髮生兩個事件之間的時間,但是基於我的方法我得到的輸出重複。這裏是我的輸入數據(注意最近,第一行不會在輸出後不能計算時間,因爲沒有其他事件):Python防止字典重複輸出
user_id,unix_timestamp,product_id
u_ab,149356478,p_4363423
u_ab,149356453,p_4363455
u_ab,149356422,p_4363456
我拿數據,並創建一個字典這裏由用戶活性:
context_sessions = {'u_ab': [['u_ab', '149356478', 'p_4363423'], ['u_ab', '149356453', 'p_4363455'], ['u_ab', '149356422', 'p_4363456']]}
這是我的代碼:
for key, value in context_sessions.items():
num_pageviews = len(value)
if num_pageviews > 1:
for a in range(num_pageviews):
user_id = context_sessions[key][(a-1)][0]
view_time = context_sessions[key][(a-1)][1]
next_view_time = context_sessions[key][(a-2)][1]
product_id = context_sessions[key][(a-1)][2]
dwell_time = int(next_pageview_time) - int(pageview_time)
print(user_id, product_id, dwell_time)
這裏是輸出(通知重複的值):
u_ab, p_4363455, 25
u_ab, p_4363455, 25
u_ab, p_4363456, 10
u_ab, p_4363455, 25
仔細檢查您的縮進。這不是有效的Python-第一個'for'之後的東西在相同的縮進級別。 –
另外,'u_ab'的context_sessions顯然只有3個條目,這使得你的'for範圍(len(context_sessions ['u_ab']))'執行4次的可能性很小。另外,我預計'next_pageview_time'和'pageview_time'分別是'next_view_time'和'view_time'。我同意aryamccarthy--這不是[mcve]。 –
您發佈的代碼將不會運行並生成您指示的結果。因此,我已經投下了這個問題。但是,索引編制的問題足以指出您的大部分問題,並且可能已經足夠普遍,它會在未來讓其他人受益,所以我發佈了一個答案。如果你在這裏更新你的代碼,以便輸出實際上符合你的輸入,請確保留下評論,我將刪除我的downvote。 –