我有三个数组,如下所示:
users
- 包含50000个用户的ID(全部不同)pusers
- 包含拥有某些帖子的用户的ID(包含重复的ID,也就是说,一个用户可以拥有多个帖子)[50000值] score
- 包含与pusers中每个值对应的分数。[50000 values] 现在我想基于以下计算填充另一个数组PScore
。对于users
中pusers
的每个值,我需要获取相应的score
并将其添加到与PScore
对应的索引中的user
数组中。
实施例,
if users[5] = 23224
and pusers[6] = pusers[97] = 23224
then PScore[5] += score[6]+score[97]
注意事项:
score
与pusers
相关(例如,pusers[5]
有score[5]
)PScore
预计会与users
相关(例如users[5]
的累积得分为Pscore[5]
)score
0。任何人都可以帮我这样做吗?我尝试了很多但是一旦我运行了不同的试验,输出屏幕仍然是空白的,直到我Ctrl+Z
并离开。
我浏览了以下所有帖子,但我无法有效地使用它们。
我是这个论坛的新手,我也是Python的初学者。任何帮助对我都非常有用。
好的,我知道我的方法有问题。那么我不应该在这种情况下使用列表吗?任何人都可以告诉我应该如何处理这个问题?
我到达的数据样本如下所示。
PUsers Score
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
-1 0
13 0
77 1
77 4
77 3
77 0
77 2
77 2
77 3
102 2
105 0
108 2
108 2
117 2
Users
-1
1
2
3
4
5
8
9
10
11
13
16
17
19
20
22
23
24
25
26
27
29
30
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
48
49
50
我想要的只是与每个用户相关的总分。 pusers列表再次包含重复,而用户列表包含唯一值。我需要以这样的方式存储与每个用户相关联的总得分,如果我说PScore[6]
,则应该引用与User[6]
相关联的总得分。
希望我回答了问题。
提前致谢。
答案 0 :(得分:2)
从你描述数组的方式开始,既然你正在使用python,这看起来就像是词典的完美候选者。
您应该能够创建一个将用户ID映射到分数的字典,而不是为帖子所有者设置一个数组,为帖子分数设置另一个数组。当您接收数据时,请查看字典以查看用户是否已存在。如果是,请将分数添加到当前分数。如果没有,请创建一个新条目。当您循环浏览所有数据时,您应该有一个从用户ID映射到总分的字典。
http://docs.python.org/2/tutorial/datastructures.html#dictionaries
答案 1 :(得分:1)
我认为你的算法错误或坏了。
尝试计算它的复杂性。如果它是N^2
或更多,您可能使用效率低下的算法。具有50.000个元素的O(N^2)
应该需要几秒钟。 O(N^3)
可能需要几分钟。
如果您确定自己的方法,请尝试使用一些小的假数据运行它,以确定它是否做正确的事情,或者您是否意外添加了一些无限循环。
您可以使用词典轻松地在线性时间内使用它。