簡體   English   中英

python 中是否有更好的方法來比較不同列表中的字典?

[英]Is there a better way in python to compare dictionaries in different list?

x = [{'name': 'Abhay', 'has_subscription': True, 'id': 1}, {'name': 'Jay', 'has_subscription': True, 'id': 2}, {'name': 'John', 'has_subscription': True, 'id': 3}]
y = [{'name': 'John', 'id': 0}, {'name': 'Abhay', 'id': 1}, {'name': 'Jay','id': 2}, {'name': 'John', 'id': 3}, {'name': 'Chanakya', 'id': 4}]

我想從 'y' 中獲取所有不在 x 中的項目

我嘗試了一些解決方案,但我認為它們沒有針對部署在生產服務器上進行優化

這是我嘗試過的代碼

for user in y :
   for xuser in x:
      if user['id'] == xuser['id']:
         y.remove(user)
         break
print(y)

現在我的用戶沒有在“y”中的 active_subscription

一種避免重復掃描x的方法:

>>> x = [{'name': 'Abhay', 'has_subscription': True, 'id': 1}, {'name': 'Jay', 'has_subscription': True, 'id': 2}, {'name': 'John', 'has_subscription': True, 'id': 3}]
>>> y = [{'name': 'John', 'id': 0}, {'name': 'Abhay', 'id': 1}, {'name': 'Jay', 'id': 2}, {'name': 'John', 'id': 3}, {'name': 'Chanakya', 'id': 4}]
>>> xk = set(d["id"] for d in x)
>>> ym = [d for d in y if d["id"] not in xk] 
>>> ym
[{'name': 'John', 'id': 0}, {'name': 'Chanakya', 'id': 4}]

暫無
暫無

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

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