我有一個字典串列,如下:
我有一個字典串列。
d_dict = [
{'Abs Diff': 10,'Difference':10, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'AB'},
{'Abs Diff': 20,'Difference':20, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'B'},
{'Abs Diff': 30,'Difference':-30, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'BA'},
{'Abs Diff': 23,'Difference':23, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'CB'},
{'Abs Diff': 25,'Difference':25, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'C'},
{'Abs Diff': 48,'Difference':-48, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'CB'},
{'Abs Diff': 5,'Difference':5, 'Component': 'Price', 'Id':'123', 'Name': 'LAT', 'Executor':'AB'},
{'Abs Diff': 5,'Difference':5, 'Component': 'Price', 'Id':'123', 'Name': 'LAT', 'Executor':'B'},
{'Abs Diff': 10,'Difference':-10, 'Component': 'Price', 'Id':'123', 'Name': 'LAT'/span>, 'Executor'/span>:'BA'/span>}.
]
我的最終目標是有一個字典,它可以回傳:
result = [
{'Abs Diff': 10,'Difference':10, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'AB', 'Result':'Mismatch Executor'},
{'Abs Diff': 20,'Difference':20, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'B', 'Result':'Mismatch Executor'},
{'Abs Diff': 30,'Difference':-30, 'Component': 'Local Market', 'Id':'123', 'Name': 'LAT', 'Executor':'BA', 'Result':'Mismatch Executor'},
{'Abs Diff': 23,'Difference':23, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'CB', 'Result':'Mismatch Executor'},
{'Abs Diff': 25,'Difference':25, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'C', 'Result':'Mismatch Executor'},
{'Abs Diff': 48,'Difference':-48, 'Component': 'USD Market', 'Id':'456', 'Name': 'LAT', 'Executor':'CB', 'Result':'Mismatch Executor'},
{'Abs Diff': 5,'Difference':5, 'Component': 'Price', 'Id':'123', 'Name': 'LAT', 'Executor':'AB', 'Result':'Mismatch Executor'},
{'Abs Diff': 5,'Difference':5, 'Component': 'Price', 'Id':'123', 'Name': 'LAT', 'Executor':'B', 'Result':'Mismatch Executor'},
{'Abs Diff': 10,'Difference':-10, 'Component': 'Price', 'Id':'123', 'Name': 'LAT', 'Executor':'BA', 'Result':'Mismatch Executor'}.
]
我想實作一個邏輯,即。 如果Abs Diff大于0,并且如果組件、id、name在多個元素中匹配,如果相同元素中的差異之和小于1,并且執行者在這些元素中不同,則回傳一個新的鍵值,配對 "結果"。"不匹配"
我很難想象如何在串列中掃描多個字典并檢查匹配的組件、ID和名稱。
uj5u.com熱心網友回復:
用一個生成器呼叫sum(),找到所有符合條件的字典。
for i in d_dict:
if i['Abs Diff'/span>] > 0 and
sum(x['Difference'] for X in d_dict
if (x['Component'], x['Id'], x['Name'] == (i['Component'], i['Id'], i['Name'] ) and x['Executor'] != i['Executor'] !
) < 1:
i['Result'] = 'Mismatched Executor'
uj5u.com熱心網友回復:
下面是一個我如何解決這個問題的例子
from operator import itemgetter
newdict = []
for i in d_dict:
if(i['Abs Diff'] > 0) 。
newdict.append(i)
newlist = sorted(newdict, key=itemgetter('Component')
for i in range(0, len(d_dict)-1)。
if(d_dict[i]['Component'/span>] == d_dict[int(i 1)]['Component'])。)
print("TRUE"/span>)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314520.html
標籤:
下一篇:PythonIF真/假
