4

我有如下列出的三个数组:

  1. users— 包含 50000 个用户的 id(所有不同的)
  2. pusers— 包含拥有一些帖子的用户的id(也包含重复的id,即一个用户可以拥有许多帖子)[ 50000 个值]
  3. score— 包含pusers中每个值对应的分数。[50000个值]

现在我想PScore根据以下计算填充另一个数组。对于usersin 的每个值pusers,我都需要获取对应的值score并将其添加到与PScorein 对应的索引中的数组中user

例子,

if users[5] = 23224
and pusers[6] = pusers[97] = 23224 
then PScore[5] += score[6]+score[97]

注意事项:

  • scorepusers(例如,pusers[5]score[5])有关
  • PScore预计与(例如, isusers的累积分数)相关users[5]Pscore[5]
  • 最终目的是将帖子的累积分数分配给拥有它的用户。
  • 不拥有任何帖子的用户被分配score为 0。

谁能帮我做这件事?我尝试了很多,但是一旦我进行了不同的试验,输出屏幕一直是空白的,直到我Ctrl+Z离开。

我浏览了以下所有帖子,但我无法在我的场景中有效地使用它们。

我是这个论坛的新手,我也是 Python 的初学者。任何帮助都会对我非常有用。

附加信息

  • 我正在使用 StackOverflow 数据做一个小项目。
  • 我正在使用 Orange 工具,并且正在学习该工具和 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

我想要的只是与每个用户相关的总分。再一次,用户列表包含重复,而用户列表包含唯一值。我需要以这样一种方式存储与每个用户关联的总分,如果我说PScore[6],它应该是指与关联的总分User[6]

希望我回答了这些问题。

提前致谢。

4

2 回答 2

2

从您描述数组的方式来看,并且由于您使用的是 python,这看起来像是字典的完美候选者。

您应该能够创建一个将用户 ID 映射到分数的字典,而不是为帖子所有者设置一个数组,为帖子分数设置另一个数组。当您接收数据时,请查看字典以查看用户是否已经存在。如果是这样,将分数添加到当前分数。如果没有,请创建一个新条目。当您遍历所有数据时,您应该有一个从用户 ID 映射到总分的字典。

http://docs.python.org/2/tutorial/datastructures.html#dictionaries

于 2013-11-04T16:59:50.787 回答
1

我认为您的算法错误或损坏。尝试计算它的复杂性。如果是N^2或更多,您可能会使用效率低下的算法。O(N^2)有 50.000 个元素应该需要几秒钟。O(N^3)可能需要几分钟。如果您确定您的方法,请尝试使用一些小的假数据运行它,以确定它是否正确,或者您是否不小心添加了一些无限循环。

您可以使用字典轻松地使其在线性时间内工作。

于 2013-11-04T17:06:50.717 回答