簡體   English   中英

將兩個字典列表映射到一個列表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM