comparison bin/uniq_merge.py @ 158:f5e2211b50bd

do whole line
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Wed, 06 Jul 2022 18:00:53 +0100
parents 464d2dfb99c9
children
comparison
equal deleted inserted replaced
157:cac9586291ad 158:f5e2211b50bd
1 #!/usr/bin/env python3 1 #!/usr/bin/env python3
2 # Merge counts by key from the output of "uniq -c" and sort in descending order 2 # Merge counts by key from the output of "uniq -c" (or sus) and sort in descending order
3 # An alternative to sus when the scale is too big for the initial sort, or if uniq -c already does a lot 3 # An alternative to sus when the scale is too big for the initial sort, or if uniq -c already does a lot
4 # of the work 4 # of the work
5 # Usage: ... | uniq -c | uniq-merge.py 5 # Usage: ... | uniq -c | uniq-merge.py
6 import sys 6 import sys
7 s={} 7 from collections import defaultdict
8 s=defaultdict(int)
8 for l in sys.stdin: 9 for l in sys.stdin:
9 (i,d)=l.split() 10 (i,d)=l.split(maxsplit=1)
10 i=int(i) 11 s[d]+=int(i)
11 if d in s:
12 s[d]+=i
13 else:
14 s[d]=i
15 for (d,n) in sorted(s.items(),key=lambda j:j[1],reverse=True): 12 for (d,n) in sorted(s.items(),key=lambda j:j[1],reverse=True):
16 print('%5d\t%s'%(n,d)) 13 sys.stdout.write('%5d\t%s'%(n,d))