Python实现对嵌套列表字典按某一元素合并及lambda的使用

来源:互联网 发布:js获取unix时间戳 编辑:程序博客网 时间:2024/06/13 04:53
#! /usr/bin/env python#coding=utf-8class MergeResource(object):    def __init__(self, resource_list):        self.resource_list = resource_list    def merge_resource(self):        merge_resource = []        merge_resource.append(self.resource_list[0])#加入第一个        for dict in self.resource_list[1:]: #把第一个排除            k=0            for item in merge_resource:                if dict['host'] == item['host']:                    item['cpu'] += dict['cpu']                    item['mem'] += dict['mem']                    break                else:                    k=k+1                if k == len(merge_resource):                    merge_resource.append(dict)                    break #不加就会有错误!!!        #print 'merge_resource: ', merge_resource        return merge_resourceif __name__ == '__main__':    resource_list=[{'host':'compute21', 'cpu':2, 'mem':4},{'host':'compute21', 'cpu':2, 'mem':4},                 {'host':'compute22', 'cpu':2, 'mem':4},{'host':'compute23', 'cpu':2, 'mem':4},                 {'host':'compute22', 'cpu':2, 'mem':4},{'host':'compute23', 'cpu':2, 'mem':4},                 {'host':'compute24', 'cpu':2, 'mem':4}]    #1、merge之前    maxResourceHost = max(resource_list, key = lambda x: x['cpu'])['host']    print 'maxResourceHost: ', maxResourceHost    maxResourceCpu = max(resource_list, key = lambda x: x['cpu'])['cpu']    print 'maxResourceCpu: ', maxResourceCpu    #1、merge之后    merge = MergeResource(resource_list)    merge_resource = merge.merge_resource()    print 'merge_resource: '    print merge_resource    maxResource = max(merge_resource, key = lambda x: x['cpu'])    print 'maxResource: ', maxResource    maxResourceCpu = max(merge_resource, key = lambda x: x['cpu'])['cpu']    print 'maxResourceCpu: ', maxResourceCpu

结果:

maxResourceHost:  compute21maxResourceCpu:  2merge_resource: [{'mem': 8, 'host': 'compute21', 'cpu': 4}, {'mem': 8, 'host': 'compute22', 'cpu': 4}, {'mem': 8, 'host': 'compute23', 'cpu': 4}, {'mem': 4, 'host': 'compute24', 'cpu': 2}]maxResource:  {'mem': 8, 'host': 'compute21', 'cpu': 4}maxResourceCpu:  4
0 0
原创粉丝点击