Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import random
- import itertools
- import collections
- li1=[]
- li2=[]
- li3=[]
- li4=[]
- li5=[]
- di1={}
- di2={}
- di3={}
- di4={}
- di5={}
- for i in range(400000):
- i2=str(i)
- v=random.random()
- r1=random.random()
- r2=random.random()
- r3=random.random()
- r4=random.random()
- r5=random.random()
- if r1<.5: li1.append([i2,v])
- if r2<.5: li2.append([i2,v])
- if r3<.5: li3.append([i2,v])
- if r4<.5: li4.append([i2,v])
- if r5<.5: li5.append([i2,v])
- if r1<.5: di1[i2]=v
- if r2<.5: di2[i2]=v
- if r3<.5: di3[i2]=v
- if r4<.5: di4[i2]=v
- if r5<.5: di5[i2]=v
- #method 1
- start=time.time()
- #stack
- li=li1+li2+li3+li4+li5
- groups={}
- for key, group in itertools.groupby(sorted(li),lambda x:x[0]):
- groups[key] = sum([y for x, y in group])
- print len(groups), time.time()-start, groups.get('1',0)
- #method 2
- start=time.time()
- groups={}
- for k in set(di1.keys()+di2.keys()+di3.keys()+di4.keys()+di5.keys()):
- groups[k]=di1.get(k,0)+di2.get(k,0)+di3.get(k,0)+di4.get(k,0)+di5.get(k,0)
- print len(groups), time.time()-start, groups.get('1',0)
- #method 3
- start=time.time()
- groups=dict( (n, di1.get(n, 0)+di2.get(n, 0)+di3.get(n, 0)+di4.get(n, 0)+di5.get(n, 0))
- for n in set(di1).union(set(di2)).union(set(di3)).union(set(di4)).union(set(di5)))
- print len(groups), time.time()-start, groups.get('1',0)
- #method 4
- start=time.time()
- #stack
- li=li1+li2+li3+li4+li5
- groups={}
- for i in li:
- groups[i[0]]=groups.get(i[0],0)+i[1]
- print len(groups), time.time()-start, groups.get('1',0)
- #method 5
- start=time.time()
- li=li1+li2+li3+li4+li5
- groups=collections.defaultdict(float)
- for k, v in li:
- groups[k]+=v
- print len(groups), time.time()-start, groups.get('1',0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement