[英]Python: Find matching records in two lists of dictionaries (different key names)
我有兩個具有不同鍵但值重疊的字典列表,如下所示:
list_a = [{key1: value_a, key2: value_b}, {key1: value_c, key2: value_d}, ...]
list_b = [{key3: value_a, key4: value_z}, {key3: value_c, key4: value_z}, ...]
我想將它們連接在一起,以便我可以將key4
附加到list_a
或指示沒有找到匹配的記錄。
我一直在使用嵌套的for
循環來執行此操作:
for i in list_a:
for v in list_b:
if i["key1"] == v["key3"]:
i["key4"] = v["key4"]
else:
i["key4"] = False
這似乎不是很編程有效的,因為我經歷了所有有循環list_b
為每list_a
值。 有沒有更有效的方法來做到這一點?
我正在處理的實際數據更復雜,所以我在每個列表中都有一些條件可以匹配。
我查看了列表推導式,但不確定該走哪條路。
任何指針(對於這個新手!)表示贊賞!
編輯:預期輸出:
list_a = [{key1: value_a, key2: value_b, key4: value_z},
{key1: value_c, key2: value_d, key4: value_z},
{key1: value_e, key2: value_f, key4: False}, ...]
基本上找到匹配條目list_b
到list_a
基礎值,然后更新list_a
從比賽的其他KV成對或指示匹配沒有被發現。
將list_b
轉換為dict
以便於查找
前任:
list_a = [{key1: value_a, key2: value_b}, {key1: value_c, key2: value_d}, ...]
list_b = [{key3: value_a, key4: value_z}, {key3: value_c, key4: value_z}, ...]
list_b_l = {i['key3']: i['key4'] for i in list_b}
for i in list_a:
i['key4'] = list_b_l.get(i['key1'], False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.