python多级字典_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

‘‘‘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值