【发布时间】:2013-09-18 14:39:12
【问题描述】:
我有 2 个列表(“IDS”和“Pay”)。 IDS的len是50000,Pay的len是650000 IDS 是 IDS 的列表,例如 [1,2,3,4,5,6 ... ],而 PAY 列表是包含 IDS 所做的所有付款的列表的列表,例如 [ [1,50], [1,100], [1,60], [2,50], [2,80], [2,50], ...]
要知道每个 ID 总共支付了多少,我在另一个 for 循环中做一个 for 循环,就像这样:
for x in IDS:
total = 0
for i in xrange(0,len(Pay)):
if x == Pay[i][0]:
total += Pay[i][1]
print x + str(total)
但是处理这个需要很长时间! 我曾尝试将 Pay 分成 10 份,但仍然花费了太长时间。 任何人都知道如何改进此操作?
谢谢!
【问题讨论】:
-
对 Pay {IDS: IDSmult} 使用字典。 ~O(1) 而不是 O(n)
-
使用字典进行支付怎么样?点赞支付 = {1:[50,100,60]},2:[50,80,50,....
-
如果使用 dict 你也可以删除 IDS。
标签: python loops for-loop logic