如何精简Python代码,从wd提取lchar排序后逐行打印元组
代码精简方案
原有代码存在可优化空间:
- 每次向列表追加元素后都执行排序属于不必要的重复操作,实际仅需所有元素添加完成后排序1次即可,可大幅降低时间复杂度
- 可直接用Python内置的
sorted()函数生成排序后的列表,省去手动循环追加、单独排序的步骤
场景1:需要保留排序后的lchar列表供后续使用
# reverse参数设为True是倒序,改为False即为正序 lchar = sorted(((val, key) for key, val in wd.items()), reverse=True) for key, val in lchar: print(key, val)
场景2:不需要保留lchar,仅需完成打印需求
可以进一步精简为单轮循环,无需额外定义列表变量:
# reverse参数设为True是倒序,改为False即为正序 for key, val in sorted(((val, key) for key, val in wd.items()), reverse=True): print(key, val)
补充说明
如果确实有动态追加元素同时保持列表有序的特殊需求,可以使用标准库bisect模块实现插入式排序,但针对当前全量处理wd字典的场景,上述直接使用sorted()的方案是性能和简洁度最优的选择。
内容的提问来源于stack exchange,提问作者martymcflynn
相关产品推荐
相关产品推荐

