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
‘‘‘
时间: 2024-10-20 01:19:36

python 多级字典值合并的相关文章

python中如何快速合并两个列表里面的字典

前几天有个小伙伴有这么一个需求: l1 = [{x: x} for x in range(10)] l2 = [{x: x} for x in range(10, 20)] 想要实现如下的结果: [{0: 0, 10: 10}, {1: 1, 11: 11}, {2: 2, 12: 12}, {3: 3, 13: 13}, {4: 4, 14: 14}, {5: 5, 15: 15}, {6: 6, 16: 16}, {7: 7, 17: 17}, {8: 8, 18: 18}, {9: 9,

Python字典按值排序、包含字典的列表按字典值排序的方法

#-*- encoding=utf-8 -*- import operator #按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] #如果要降序排序,可以指定reverse=True sorted_x = sorted(x.i

Python 字典值相加

#字典值相加 def union_dic(*objs): _keys = set(sum([obj.keys() for obj in objs],[])) _total = {} for _key in _keys: _total[_key] = sum([obj.get(_key,0) for obj in objs]) return _total

python之字典应用

#author:zhouyu#字典,在Python里面也是经常用到的,它的存储方式是key:value,# 它是无序的,不像我们的字典,字典是用大括号{}括起来的a = {    'name':'zhouyu',    'age':22,    'sex':'male',    'QQ':'1090139534'}#打印出字典print(a)#打印指定的key的valueprint(a['name'])#修改keya['name'] = 'zhouziqi'#增加key和valuea['cont

初识python: 字典

使用数据字典,编写一个多级菜单: 需求:每一级可返回上级,可退出. 多级菜单 #!/user/bin env python # author:Simple-Sir # time:20180915 # 使用字典实现多级菜单 sheng = { '四川省':{ '成都':{ '高新区':['第1条信息:','第2条信息:','第3条信息.'], '天府新区':['第1条信息:','第2条信息:','第3条信息.'], '武侯区':['第1条信息:','第2条信息:','第3条信息.'], }, '德

Python中字典和集合

映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表.字典和元组不能用作键 引用不存在的键会引发KeyError异常 1)字典 dict { } 空字典 { key1:value1,key2:value2,... } 字典在其它编程语言中又称作关联数组或散列表: 通过键实现元素存取:无序集合:可变类型容器,长度可变,异构,嵌套 支持的操作: len(D

[python] 之 字典简介

字典是python中唯一的映射类型,其哈希值(键key)和指向对象(值value)是一对多的关系: 字典是可变对象,是容器类型,能存储任意个数,任意类型的映射类型,且包含在大括号中({key1:value, key2:value2, ...}): 字典中的数据类型是无序排列的. 一.创建字典 1.1 赋值创建 dict1 = {...} 1.2 工厂方法-dict() dict2 = dict((['x',1], ['y',2])) # {'x':1, 'y':2} 1.3 内建方法-fromk

python元字典

Python元字典 字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合. 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. 字典用"{ }"标识.字典由索引(key)和它对应的值value组成. #!/usr/bin/python # -*- coding: UTF-8 -*- dict = {} dict['one'] = "This is one" dict[2]

Python 之字典与集合

进入python的字典与集合的学习. 先回顾下集合. 在python中,集合用set表示.花括号与set()可以用来创建集合. 还是先创建一个空的集合 不能用s={}来创建一个集合,创建一个空的集合使用set(). 集合是无序的,不重复的,所以在创建集合的时候重复的元素会被去掉. 集合的基本运算: 交    & 并    | 差    - 对称差 ^ 举个例子: 设集合s1={1,2,3,4},集合s2={2,3,5} 则: >>> s1={1,2,3,4} >>&g