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