Mercurial > hg > cc > cirrus_home
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)) |