通过匹配字典的值来找到列表中字典的索引

发布于 2021-01-29 19:14:10

我有一个字典列表:

list = [{'id':'1234','name':'Jason'},
        {'id':'2345','name':'Tom'},
        {'id':'3456','name':'Art'}]

如何通过匹配name =’Tom’来有效地找到索引位置[0],[1]或[2]?

如果这是一维列表,则可以执行list.index(),但是我不确定如何通过搜索列表中dict的值来进行操作。

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    lst = [{'id':'1234','name':'Jason'}, {'id':'2345','name':'Tom'}, {'id':'3456','name':'Art'}]
    
    tom_index = next((index for (index, d) in enumerate(lst) if d["name"] == "Tom"), None)
    # 1
    

    如果需要从名称重复获取,则应按名称对它们进行索引(使用字典),这样 get 操作的时间为O(1)。一个想法:

    def build_dict(seq, key):
        return dict((d[key], dict(d, index=index)) for (index, d) in enumerate(seq))
    
    info_by_name = build_dict(lst, key="name")
    tom_info = info_by_name.get("Tom")
    # {'index': 1, 'id': '2345', 'name': 'Tom'}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看