我正在使用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。 –