[英]map two lists of dictionaries into one single list
我有個問題請教; 我有兩個這樣的清單
my_inital_list= [{"name": "Tom", "age": 30},
{"name": "Mark", "age": 25},
{"name": "Pam", "age": 97}]
my_second_list = [{"name": "Pam", "quant": 10},
{"name": "Mark", "quant": 5},
{"name": "Tom", "quant": 7}]
你能向我解釋一下如何在不使用嵌套循環的情況下將主題轉換成這樣的嗎
my_final_list= [{"name": "Tom", "age": 30,"quant": 7},
{"name": "Mark", "age": 25,"quant": 5},
{"name": "Pam", "age": 97, "quant": 10}
]
使用字典來避免用於匹配的嵌套 for 循環:
# create a lookup dictionary
lookup = {d["name"]: d for d in my_second_list}
# merge the dictionaries using lookup
res = [{**d, **lookup[d["name"]]} for d in my_inital_list]
print(res)
輸出
[{'name': 'Tom', 'age': 30, 'quant': 7}, {'name': 'Mark', 'age': 25, 'quant': 5}, {'name': 'Pam', 'age': 97, 'quant': 10}]
lookup
字典將my_second_list
"name"
的值映射到它自己的字典:
{'Pam': {'name': 'Pam', 'quant': 10}, 'Mark': {'name': 'Mark', 'quant': 5}, 'Tom': {'name': 'Tom', 'quant': 7}}
然后您可以使用它按名稱獲取數據,例如:
lookup["Pam"] # returns lookup["Pam"]
然后簡單地使用列表my_initial_list
遍歷my_initial_list
上的每個字典,並使用以下表達式合並相應的字典:
{**d, **lookup[d["name"]]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.