python - 过滤字典列表

标签 python list dictionary

我有一个相同词典的列表

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/

相关文章:

python - 带有赋值的 Pandas bool 过滤器导致 NaN

javascript - 数组作为默认参数在 Javascript 中安全吗?

c++ - 访问 map c++的段错误

python - Python 字典列表的 C++ 等价物?

python - 按键(整数)对字典进行有效排序,返回排序的值列表

python - 作为 ZIP 文件调用 lambda 函数时出错

python - 用新创建的对象 ID 替换复杂数据结构中的对象 ID

c# - 以字符串格式对日期列表进行排序

python - 从 Python 中的文本文件中拆分字符

复制非零值列表以填充另一个列表的零的 Pythonic 方式