[英]How to sort list of tuples by the last element if tuples can be empty in Python?
需要通过最后一个元素对元组列表进行排序,元组可以为空。 我知道如果元组不为空,该如何排序:
sorted(lst, key=lambda p: p[-1]);
但是当list具有()
: IndexError: tuple index out of range
。
我找不到如何避免这种情况。
只需在获取最后一个元素之前检查tuple
是否为空。
sorted(lst, key=lambda p: bool(p) and p[-1])
当元组为空时, bool(p) and p[-1]
返回False
(其值为0),否则返回最后一个值。
通过这种方法,如果所有值都是正数,则空元组在排序列表中排在第一位。 它需要更多调整,以使它们在一般情况下显示为第一或最后,仍然可以通过在lambda中返回一个tuple
来实现:
sorted(lst, key=lambda p: (not bool(p),bool(p) and p[-1]))
以下将使空元组在列表中排在最后(因为空时not
产生True
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.