我有一个问题。
Input=[
{'id':uuid1(),'name':'mem','point':[{'second':0,'severity':'infor'}],'date':'2021-09-15','PO':5},
{'id':uuid1(),'name':'cpu','point':[{'second':10,'severity':'warning'}],'date':'2021-09-13','PO':3},
{'id':uuid1(),'name':'cpu','point':[{'second':20,'severity':'critical'}],'date':'2021-09-14','PO':3},
{'id':uuid1(),'name':'cpu','point':[{'second':30,'severity':'infor'}],'date':'2021-09-15','PO':3}]
将在这个数组中进行比较。如果名称相同,我将合并该字典的所有值。
表示组合键'point'的所有值。我将使用multi - dict键列表point
我们有许多重复的密钥name = 'cpu'。所以我要把所有相同的值组合起来。你看,我们有PO相同的值(PO=3, name=cpu)。如果不同,我们将取最后一个值(最后一个值'date':'2021-09-15')。最后,我们将关键点列表中的字典附加在一起
预期的结果
Output=[
{'id':uuid1(),'name':'mem','point':[{'second':0,'severity':'infor'}],'date':'2021-09-15','PO':5},
{'id':uuid1(),'name':'cpu','point':[{'second':10,'severity':'warning'},
{'second':20,'severity':'critical'},
{'second':30,'severity':'infor'}],'date':'2021-09-15','PO':3}
]
注意:我使用python 3.6
我希望有人能帮助我。非常感谢可能有更好的方法来做到这一点,但以下工作:
a=[{'name':'mem','point':[{'second':0,'severity':'infor'}],'date':'2021-09-15','PO':5},
{'name':'cpu','point':[{'second':10,'severity':'warning'}],'date':'2021-09-13','PO':3},
{'name':'cpu','point':[{'second':20,'severity':'critical'}],'date':'2021-09-14','PO':3},
{'name':'cpu','point':[{'second':30,'severity':'infor'}],'date':'2021-09-15','PO':3}]
b=[]
for i in a:
for j in b:
if i['name'] == j['name']:
j['point'] += i['point']
break
else:
b.append(i)