dict1 = {'cost1': {'A': '22.727549567', 'B': '22.4940797544', 'C': '19.2819629649', 'D': '24.9302268902', 'E': '28.7951523193', 'F': '17.0993721357', 'G': '322.3279015934'}, 'cost2': {'A': 1511.7474897264, 'B': 2234.0384991703, 'C': 1811.299631493, 'D': 1394.9521800232997, 'E': 2717.4205026055, 'F': 2853.2642152811995, 'G': 63.0732507946}}
list1=[{'name': 'C','owner': 'System', 'status': 'ACTIVE'}, {'name': 'B', 'createdAt': '342 days 18 hours ago', 'owner': 'System', 'status': 'ACTIVE'}, {'name': 'C', 'createdAt': '205 days 4 hours ago', 'owner': 'ps', 'status': 'ACTIVE'}, {'name': 'A', 'createdAt': '342 days 17 hours ago', 'owner': 'System', 'status': 'ACTIVE'}, {'name': 'G', 'createdAt': '279 days 5 hours ago', 'owner': 'sb', 'status': 'ACTIVE'}, {'name': 'E', 'createdAt': '167 days 19 hours ago', 'owner': 'uk', 'status': 'ACTIVE'}, {'name': 'D', 'createdAt': '2 hours 2 mins ago', 'owner': 'uk', 'status': 'ACTIVE'}, {'name': 'F', 'createdAt': '1 days 10 hours ago', 'owner': 'chu', 'status': 'ACTIVE'}]
Result=[{'name': 'C','owner': 'System', 'status': 'ACTIVE'}, {'name': 'B', 'createdAt': '342 days 18 hours ago', 'owner': 'System', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'C', 'createdAt': '205 days 4 hours ago', 'owner': 'ps', 'status': 'ACTIVE','cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'A', 'createdAt': '342 days 17 hours ago', 'owner': 'System', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'G', 'createdAt': '279 days 5 hours ago', 'owner': 'sb', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'E', 'createdAt': '167 days 19 hours ago', 'owner': 'uk', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'D', 'createdAt': '2 hours 2 mins ago', 'owner': 'uk', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}, {'name': 'F', 'createdAt': '1 days 10 hours ago', 'owner': 'chu', 'status': 'ACTIVE', 'cost_1': <value from dict1> ,'cost_2': < value from dict 1>}]
想要將 dict1 中的 cost1 和 cost2 per 合并到 list1 中,如結果所示。
uj5u.com熱心網友回復:
一個單一的理解就可以解決問題:
result = [
d if 'createdAt' not in d
else d | {k: sub[d['name']] for k, sub in dict1.items()}
for d in list1
]
print(result)
結果:
[{'name': 'C', 'owner': 'System', 'status': 'ACTIVE'}, {'name': 'B', 'createdAt': '342 days 18 hours ago', 'owner': 'System', 'status': 'ACTIVE', 'cost1': '22.4940797544', 'cost2': 2234.0384991703}, {'name': 'C', 'createdAt': '205 days 4 hours ago', 'owner': 'ps', 'status': 'ACTIVE', 'cost1': '19.2819629649', 'cost2': 1811.299631493}, {'name': 'A', 'createdAt': '342 days 17 hours ago', 'owner': 'System', 'status': 'ACTIVE', 'cost1': '22.727549567', 'cost2': 1511.7474897264}, {'name': 'G', 'createdAt': '279 days 5 hours ago', 'owner': 'sb', 'status': 'ACTIVE', 'cost1': '322.3279015934', 'cost2': 63.0732507946}, {'name': 'E', 'createdAt': '167 days 19 hours ago', 'owner': 'uk', 'status': 'ACTIVE', 'cost1': '28.7951523193', 'cost2': 2717.4205026055}, {'name': 'D', 'createdAt': '2 hours 2 mins ago', 'owner': 'uk', 'status': 'ACTIVE', 'cost1': '24.9302268902', 'cost2': 1394.9521800232997}, {'name': 'F', 'createdAt': '1 days 10 hours ago', 'owner': 'chu', 'status': 'ACTIVE', 'cost1': '17.0993721357', 'cost2': 2853.2642152811995}]
解釋:
- 結果是字典串列
- 如果字典不包含一個
'createdAt'鍵,它應該只包含不變 - 字典確實有那個鍵,它應該用鍵和從
dict1'|' 中選擇的值更新 符號用另一本字典更新 - 這些值是使用正在處理的字典中的名稱選擇的,即
d['name'] - 一次處理原始串列 1 中的所有詞典
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386389.html
上一篇:如何制作輸入字典
