實現列表,字典巢狀去重(key去重,value去重)
阿新 • • 發佈:2019-02-08
t1 = [{'a':1}, {'a':2}, {'a':2}]
#dict([d.items()[0] for d in t1]).items()之外的部分純粹是把列表內還原成一個字典
t2 = [{value:key} for key, value in dict([d.items()[0] for d in t1]).items()]
#! /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
輸出結果:
l2: [['b', 1], ['c', 3], ['a', 1]]
l4: [{'host': 'compute21', 'cpu': 2}, {'host': 'compute22', 'cpu': 2}, {'host': 'compute23', 'cpu': 2}, {'host': 'compute24', 'cpu': 2}]
taskhost:
['compute21', 'compute22', 'compute23', 'compute24']