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