Python 字典列表搜索

新手上路,请多包涵

假设我有这个:

 [
  {"name": "Tom", "age": 10},
  {"name": "Mark", "age": 5},
  {"name": "Pam", "age": 7}
]

通过搜索“Pam”作为名称,我想检索相关字典: {name: "Pam", age: 7}

如何做到这一点?

原文由 Hellnar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 460
1 个回答

您可以使用 生成器表达式

 >>> dicts = [
...     { "name": "Tom", "age": 10 },
...     { "name": "Mark", "age": 5 },
...     { "name": "Pam", "age": 7 },
...     { "name": "Dick", "age": 12 }
... ]

>>> next(item for item in dicts if item["name"] == "Pam")
{'age': 7, 'name': 'Pam'}

如果您需要处理不存在的项目,那么您可以按照用户 Matt 在其评论中的建议进行 操作,并使用略有不同的 API 提供默认值:

 next((item for item in dicts if item["name"] == "Pam"), None)

要找到项目的索引,而不是项目本身,您可以 枚举() 列表:

 next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)

原文由 Frédéric Hamidi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏