如何从具有与另一个列表匹配的键的列表中删除字典


idlist = ['101', '102']
myd = [
{'id':'101', 'role': 'tester'},
{'id':'102', 'role': 'tester'},
{'id':'103', 'role': 'tester'}
]
  • 我有idlist
  • 我需要检查具有id的字典是否存在于myd
  • 我需要删除具有匹配id
  • 的项目预期输出:

101和102被删除

[{'id':'103', 'role': 'tester'}]

代码在

下面
for ids in idlist:
for each in myd.items():
if ids == each['id']
del each

我需要做2 for循环函数来解决这个问题吗?

你可以使用一个简单的推导式:

s = set(idlist)  # better membership test than list
myd[:] = [d for d in myd if d['id'] not in s]

从头构建列表通常比反复删除元素要好。切片赋值myd[:] = ...只是确保这是对现有列表对象的一个突变,就像删除元素一样。

一行字:

myd = [x for x in myd if x['id'] not in idlist]

本质上是用不在idlist中的值创建一个新列表。如果您想覆盖它,可以将它分配给myd

注意:这不是从列表中删除,而是替换列表。

相关内容

  • 没有找到相关文章

最新更新