簡體   English   中英

如何用同一個鍵比較兩個字典列表?

[英]How to compare two lists of dictionaries by the same key?

我必須列出字典:

basket = [{"size": "big", "food": "cheese"}, {"size": "small", "food": "cherries"}]
fruits = [{"size": "small", "food": "blueberries"}, {"size": "small", "food": "cherries"}]

我需要通過“食物”鍵比較這兩個字典列表。 如果一個水果不在籃子列表中,我想將 append 整個字典放入籃子列表中。

我試圖用 filter() 來做到這一點,但我無法想象我可以調用basket[food]並同時遍歷水果列表的場景。

您可以創建包含籃子中所有食物的臨時set ,然后通過不在此集合中的食物擴展basket列表:

basket = [
    {"size": "big", "food": "cheese"},
    {"size": "small", "food": "cherries"},
]
fruits = [
    {"size": "small", "food": "blueberries"},
    {"size": "small", "food": "cherries"},
]

in_basket = set(f["food"] for f in basket)

basket.extend(f for f in fruits if f["food"] not in in_basket)
print(basket)

印刷:

[
    {"size": "big", "food": "cheese"},
    {"size": "small", "food": "cherries"},
    {"size": "small", "food": "blueberries"},
]

你可以go通過兩個列表使用zip方法,檢查籃子列表中是否有水果列表的鍵之一,如果有你go通過水果列表並創建一個條件來檢查這個食物是否已經在列表,如果沒有,你添加

basket = [{"size": "big", "food": "cheese"}, {"size": "small", "food": "cherries"}]
fruits = [{"size": "small", "food": "blueberries"}, {"size": "small", "food": "cherries"}]

for bask, fruit in zip(basket, fruits):
  if bask['food'] == fruit['food']:
    for fruit in fruits: 
      if bask['food'] != fruit['food']:
        basket.append(fruit)

print(basket)

output:

[{'size': 'big', 'food': 'cheese'}, {'size': 'small', 'food': 'cherries'}, {'size': 'small', 'food': 'blueberries'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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