我有一个相同词典的列表
list_dict = [{'id': 1}, {'id': 2}, {'id': 3}]
现在我想过滤一个特定的字典,其 id 值为 id = 2
我愿意
list_filtered = [ dict for dict in list_dict if dict['id'] == 2]
上面的解决方案有效,但是如果我有一个很长的列表,那么迭代整个列表并检查 id 是否匹配会效率低下。还有其他解决方法吗?
最佳答案
将其设为生成器表达式并一次获取一个匹配项,如下所示
matcher = (d for d in list_dict if d['id'] == 2)
print next(matcher, None)
当您在同一个生成器对象上调用 next
时,它将从上次离开的位置恢复循环。
print next(matcher, None)
next
的第二个参数是生成器表达式耗尽时返回的默认值。
关于python - 过滤字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134952/