#! /usr/bin/env python
#coding=utf-8

class HostScheduler(object):

    def __init__(self, resource_list):

        self.resource_list = resource_list

    def MergeHost(self):
        allResource=[]
        allResource.append(self.resource_list[0])
        for dict in self.resource_list:
            #print len(l4)
            k=0
            for item in allResource:
                #print 'item'
                if dict['host'] != item['host']:
                    k=k+1
                    #continue
                else:
                    break
                if k == len(allResource):
                    allResource.append(dict)
        taskhost=[]
        for item in allResource:
            taskhost.append(item['host'])
        return taskhost

#该函数实现嵌套列表中,按某一元素去重复
def deleteRepeat():
    #1、列表中嵌套列表。按元素‘b’实现去重复
    l1=[['b',1],['b',2],['c',3],['a',1],['b',1],['b',1],]
    l2=[]
    l2.append(l1[0])
    for data in l1:
        #print len(l2)
        k=0
        for item in l2:
            #print 'item'
            if data[0] != item[0]:
                k=k+1
            else:
                break
            if k == len(l2):
                l2.append(data)
    print "l2: ",l2

    #2、列表中嵌套字典。按键值host实现去重复
    l3=[{'host':'compute21', 'cpu':2},{'host':'compute21', 'cpu':2},{'host':'compute22', 'cpu':2},
        {'host':'compute23', 'cpu':2},{'host':'compute22', 'cpu':2},{'host':'compute23', 'cpu':2},
        {'host':'compute24', 'cpu':2}]
    l4=[]
    l4.append(l3[0])
    for dict in l3:
        #print len(l4)
        k=0
        for item in l4:
            #print 'item'
            if dict['host'] != item['host']:
                k=k+1
                #continue
            else:
                break
            if k == len(l4):
                l4.append(dict)
    print "l4: ",l4

if __name__ == '__main__':
    #deleteRepeat()
    resource_list=[{'host':'compute21', 'cpu':2},{'host':'compute21', 'cpu':2},{'host':'compute22', 'cpu':2},
                   {'host':'compute23', 'cpu':2},{'host':'compute22', 'cpu':2},{'host':'compute23', 'cpu':2},
                   {'host':'compute24', 'cpu':2}]

    hostSchedule=HostScheduler(resource_list)
    taskhost=hostSchedule.MergeHost()
    print 'taskhost: '
    print taskhost