Python字典列表搜索

  • 问题:
  • 假设我有这个:

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

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

    如何做到这一点?在

  • 答案:
  • 你可以使用generator expression公司名称:

    >>> 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)

    要找到项目的索引,而不是项目本身,您可以enumerate()名单:

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