簡體   English   中英

Python:在兩個字典列表中查找匹配記錄(不同的鍵名)

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

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