標籤:python 多級字典值合并
python 多級字典值合并:
#!/bin/env pythonimport os,sys,reimport cStringIOf=open(‘/tmp/3.txt‘)‘‘‘/tmp/3.txt content:148616 ‘192.168.0.127:8080‘ 0.157 {‘200‘: 130000, ‘206‘: 250, ‘301‘: 90, ‘302‘: 6698, ‘304‘: 6018, ‘406‘: 5}148616 ‘192.168.0.127:8080‘ 0.157 {‘200‘: 130999, ‘206‘: 250, ‘301‘: 90, ‘302‘: 6698, ‘304‘: 6018, ‘406‘: 5}100 ‘192.168.0.126:8080‘ 90.007 {‘200‘: 1}‘‘‘d={}p=re.compile("([0-9]+).*\‘([0-9]+.[0-9]+.[0-9]+.[0-9]+:,?.*?)\‘.*?([0-9]+\.[0-9]+).*({.*})")s=cStringIO.StringIO()for line in f: host_port=str(re.match(p,line).group(2).split(‘,‘)[-1].strip()) Drespon_code=eval(re.match(p,line).group(4)) # Drespon_200code=eval(re.match(p,line).group(4))[‘200‘] d[host_port]=Drespon_code s.write(str(d)+",") #print d d={}ret={}for dict in eval(s.getvalue().rstrip(‘,‘)): for key,val in dict.iteritems(): for zkey in val.keys(): host_key=str(key+"_"+zkey) num=ret.get(host_key,0) num+=val[zkey] ret[host_key]=numprint ret‘‘‘{‘192.168.0.127:8080_406‘: 10, ‘192.168.0.126:8080_200‘: 1, ‘192.168.0.127:8080_200‘: 260999, ‘192.168.0.127:8080_206‘: 500, ‘192.168.0.127:8080_301‘: 180, ‘192.168.0.127:8080_302‘: 13396, ‘192.168.0.127:8080_304‘: 12036‘‘‘
本文出自 “linux系統維護” 部落格,請務必保留此出處http://linuxadmin.blog.51cto.com/2683824/1658417
python 多級字典值合并