Python2兼容的dictTimeFC日期排序语句Python3适配修改咨询
代码迁移Python3适配调整
原Python2代码迁移到Python3需要完成两处修正,即可正常运行且保持原排序逻辑:
- 修正触发SyntaxError的lambda语法写法
Python2 对lambda的语法校验较宽松,允许给参数整体包裹圆括号(即lambda(x):的形式),但Python3 严格校验语法规则,lambda的参数定义不允许套额外圆括号,这是抛出语法错误的直接原因,去掉括号改为lambda x:即可。 - 修正map返回值的类型适配问题
Python3中内置map()函数不再返回可直接比较的列表,而是返回惰性迭代器,两个迭代器对象之间无法直接做大小比较,哪怕修正了语法问题,运行时也会触发类型错误。需要将map的返回结果用tuple()包裹,让排序逻辑和Python2版本完全对齐。
调整后的可直接运行代码:
for key, val in sorted(dictTimeFC.items(), key=lambda x: tuple(map(int, x[0].split('-')))):
调整后代码的排序效果和原Python2版本完全一致:会将YYYY-mm格式的键拆分为年、月的整数值逐次比较,可正确识别2020-9和2020-10的先后顺序,不会出现纯字符串排序导致的月份排序错乱问题。
内容的提问来源于stack exchange,提问作者kkch
相关产品推荐
相关产品推荐

