python 字典排序 lambda,根据lambda排序字典:处理异常

lambda x: None if x[1] is None else x[1][0]

这实际上把None放在第一位,因为None似乎比任何东西都少。嗯,很有趣。在

在Python3中,默认情况下不能比较不兼容类型的对象。因此,为了将来的验证,您应该替换一个可以与x[1][0]类型相比较的值。当然,这种方法也适用于python2.x。例如,如果是数字,可以使用:

^{pr2}$

这将使None值全部排序到最后。在

为每个None值计算float("+inf")不是最佳性能;如果这是一个瓶颈,只需定义一次并在lambda中使用它:posinf = float("+inf")

lambda x: posinf if x[1] is None else x[1][0]

如果float("+inf")可能是您的数据的有效值,那么您可能需要一个特殊的类,它总是比任何其他类都大:class Maximus(object):

"Object that is greater than any other object (but equal to itself)."

__le__ = __eq__ = lambda self, other: isinstance(other, type(self))

__ne__ = __gt__ = lambda self, other: not isinstance(other, type(self))

__lt__ = lambda self, other: False

__ge__ = lambda self, other: True

__str__ = lambda self: "I am the greatest!"

__repr__ = lambda self: "Maximus()"

maximus = Maximus()

lambda x: maximus if x[1] is None else x[1][0]

(我相信只有__lt__和__eq__就可以进行排序,但是Maximus拥有完整的比较方法。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值