如何解决python中有更好的方法来比较不同列表中的字典吗?
x = [{'name': 'Abhay','has_subscription': True,'id': 1},{'name': 'Jay','id': 2},{'name': 'John','id': 3}]
y = [{'name': 'John','id': 0},{'name': 'Abhay','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)
现在我有没有 active_subscription 的用户在 'y' 中
解决方法
一种避免重复扫描 x
的方法:
>>> x = [{'name': 'Abhay','has_subscription': True,'id': 1},{'name': 'Jay','id': 2},{'name': 'John','id': 3}]
>>> y = [{'name': 'John','id': 0},{'name': 'Abhay','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': 4}]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。