python 多级字典值合并:
#!/bin/env python import os,sys,re import cStringIO f=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]=num print 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 ‘‘‘
时间: 2024-10-20 01:19:36