python,对列表内元组排序的问题,如果不是每个元组都有这个元素,如何避免out of range的问题?

比如,a=[('dave','B',10),('jane','S'),('john','C',15),('Kay','E'),('john','A',15)],我要先对列... 比如,a = [('dave', 'B', 10), ('jane', 'S'), ('john', 'C', 15),('Kay', 'E'), ('john', 'A', 15)] , 我要先对列表a里面的元素按名字排序(也就是字母),然后再按照第二个元素排序,最后如果各个元组有第三个元素的话,就按其排序,也就是年龄。前面的两个排序我都ok,但是最后一个因为有两个元组是没有年龄的,所以不能全部直接用sorted()函数,所以不知道该怎么去排序?求指教,谢谢!
如果列表是这样:a = [('dave', 'B', 10), ('jane', 'S'), ('john', 'C', 15),('Kay', 'E'), ('john', 'A', 16)],(最后一个元组的数字变了),如果我只是想要对名字为John的元组排序,忽略掉其他也有数字的元组,如果想要达成这样的话有什么方法可以实现吗?谢谢
展开
 我来答
匿名用户
推荐于2016-01-27
展开全部
一个简单的做法是给没有第三个值的元组的加一个不可用的值(比如负数或者超大正数,这个取决于你的需求),然后用一个稳定的排序算法从3排起如果不能加的话其实也是这个思路,把没有当成某个特殊值,不过这样排序你就得自己搞了
追问
谢谢,那请问如果列表是这样:a = [('dave', 'B', 10), ('jane', 'S'), ('john', 'C', 15),('Kay', 'E'), ('john', 'A', 16)],(最后一个元组的数字变了),如果我只是想要对名字为John的元组排序,忽略掉其他也有数字的元组,如果想要达成这样的话有什么方法可以实现吗?谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式