我有一个字典列表:
list = [{'id':'1234','name':'Jason'}, {'id':'2345','name':'Tom'}, {'id':'3456','name':'Art'}]
如何通过匹配name =’Tom’来有效地找到索引位置[0],[1]或[2]?
如果这是一维列表,则可以执行list.index(),但是我不确定如何通过搜索列表中dict的值来进行操作。
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'}