码迷,mamicode.com
首页 > 编程语言 > 详细

python 多级字典值合并

时间:2015-06-04 17:33:40      阅读:497      评论:0      收藏:0      [点我收藏+]

标签:python 多级字典值合并

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
‘‘‘


本文出自 “linux系统维护” 博客,请务必保留此出处http://linuxadmin.blog.51cto.com/2683824/1658417

python 多级字典值合并

标签:python 多级字典值合并

原文地址:http://linuxadmin.blog.51cto.com/2683824/1658417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!