以对象fullname为键向字典分配对象,寻求更高效实现方式
更高效的字典转换实现方式
当然有更简洁且高效的实现方式!你的循环写法完全可行,但Python提供了字典推导式——这是一种经过底层优化的语法,不仅代码更紧凑,执行效率也会比普通for循环更高(处理大规模列表时优势更明显)。
直接用一行代码就能完成和你原逻辑完全一致的操作:
obj_dict = {obj.fullname: obj for obj in obj_list}
这个推导式和你的循环逻辑完全匹配:如果列表中存在重复fullname的对象,后面的会覆盖前面的。而且它的底层是C级别的实现优化,比纯Python层面的循环迭代速度更快。
如果需要兼容更老的Python版本(比如2.6及以前),还可以用生成器表达式配合dict()构造函数:
obj_dict = dict((obj.fullname, obj) for obj in obj_list)
不过从可读性和现代Python最佳实践来看,字典推导式是更推荐的选择,它的语法直观清晰,一眼就能理解你要构建的键值映射关系。
内容的提问来源于stack exchange,提问作者Ray Salemi
相关产品推荐
相关产品推荐

