<pre><code>myList= [
{'hostname': 'ABC', 'servicecheck': 'The roof is on fire', 'state': 'prettybad' },
{'hostname': 'DEF', 'servicecheck': 'The roof is on fire', 'state': 'prettybad' },
{'hostname': 'GHI', 'servicecheck': 'The roof is on fire', 'state': 'prettybad' },
{'hostname': 'ABC', 'servicecheck': 'The sky is blue', 'state': 'notsobad' },
{'hostname': 'ABC', 'servicecheck': 'The birds are pretty', 'state': 'prettybad' }
]
visitedIndexes = {}
myListLen=len(myList)
for i in range(0,myListLen):
if i in visitedIndexes:
myList[i]=None
else:
visitedIndexes[i]=True
#process the current index
for j in range(i+1,myListLen):
if myList[i]["servicecheck"] == myList[j]["servicecheck"] and myList[i]["state"]==myList[j]["state"]:
#group into the i index
if isinstance(myList[i]["hostname"], str):
myList[i]["hostname"]=[ myList[i]["hostname"]]
myList[i]["hostname"].append(myList[j]["hostname"])
visitedIndexes[j]=True
myListFinal=[obj for obj in myList if obj!=None]
print(myListFinal)
</code></pre>