>>> ids = next(entry['id'] for entry in stop_list if entry['name'] == name)
>>> next(ids)
# you will get the first matching id here
>>> next(ids)
# you will get the second matching id here
如果要进行多个查找,并且给定名称是唯一的,那么请预处理列表并创建字典,如下所示
lookup = {entry['name']: entry['id'] for entry in stop_list}
在看了代码之后,你似乎得到了同名词典。 如果你的名字是唯一的,你应该考虑用一个dict作为你的dict,其中键就是名字。你知道吗
1-这将允许您不浏览列表(与dict查找相比成本高昂)
2-更具可读性
3-只调用entry['name']一次
假设你的stopdict是这样的
访问id的方式如下:
可以使用生成器表达式和
next
函数,如下所示这将遍历
stop_list
,当它找到匹配项时,它将产生entry['id']
。这会更好,因为这不必迭代整个列表。你知道吗另一个优点是,如果有多个匹配项,那么也可以使用相同的表达式来获取下一个id,如下所示
如果要进行多个查找,并且给定名称是唯一的,那么请预处理列表并创建字典,如下所示
然后您可以使用
lookup[name]
在固定时间内进行查找。如果名称是唯一的并且有多个查找,这将是最有效的方法相关问题 更多 >
编程相关推荐