python寫的簡單分組統計指令碼

lsq_008發表於2016-03-23
訪問日誌內容:
'asdfasd'|2222|'asdfasdf'|{'phone':'13511020335','name':'lsq','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13511020335','name':'lsq','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13810210010','name':'llj','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'18900102987','name':'ljk','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13810210010','name':'llj','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13511020335','name':'lsq','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13511020335','name':'lsq','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'13511020335','name':'lsq','address':'asdfasdfasdfasf'}
'asdfasd'|2222|'asdfasdf'|{'phone':'18900102987','name':'ljk','address':'asdfasdfasdfasf'}

統計需求:按電話和使用者名稱來統計訪問次數

可以用三種方法:

### 1. collections  Counter
from collections import Counter
l = []
for s in open('a.txt'):
    d = eval(s.split('|')[-1].strip())
    l.append(d['phone']+ '||' + d['name'])
    
Counter(l)

Counter({'13511020335||lsq': 5, '18900102987||ljk': 2, '13810210010||llj': 2})

### 2.list.count
l = []
for s in open('a.txt'):
    d = eval(s.split('|')[-1].strip())
    l.append(d['phone']+ '||' + d['name'])
a = {}
for i in l:
    if l.count(i)>=1:
        a[i] = l.count(i)
print a

>>> print a
{'18900102987||ljk': 2, '13810210010||llj': 2, '13511020335||lsq': 5}

### 3.dict in
dr = {}
for s in open('a.txt'):
    d = eval(s.split('|')[-1].strip())
    k_dr = d['phone']+ "||" + d['name']
    if k_dr in dr:
        dr[k_dr] = dr[k_dr] + 1
    else:
        dr[k_dr] = 1

>>> print dr
{'18900102987||ljk': 2, '13810210010||llj': 2, '13511020335||lsq': 5}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10972173/viewspace-2062806/,如需轉載,請註明出處,否則將追究法律責任。

相關文章