繁体   English   中英

如果在Python中元组可以为空,如何按最后一个元素对元组列表进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM