Python3中的二维列表排序
在Python3中,我很难对多维列表进行排序。我想根据姓名的字母顺序对下面的列表进行排序,然后根据年龄对列表进行排序。我尝试过使用排序函数和lambda键,但我得到了相同的索引错误,表明列表超出范围。我将如何对整个列表进行排序Python3中的二维列表排序,python,sorting,Python,Sorting,在Python3中,我很难对多维列表进行排序。我想根据姓名的字母顺序对下面的列表进行排序,然后根据年龄对列表进行排序。我尝试过使用排序函数和lambda键,但我得到了相同的索引错误,表明列表超出范围。我将如何对整个列表进行排序 mylist = [] mylist.append([]) mylist.append([]) mylist.append([]) mylist[0].append("Anna") mylist[0].append("Mar
mylist = []
mylist.append([])
mylist.append([])
mylist.append([])
mylist[0].append("Anna")
mylist[0].append("Maria")
mylist[1].append("Doctor")
mylist[1].append("Teacher")
mylist[2].append(36)
mylist[2].append(28)
您可以按如下方式使用:
import operator
mylist = []
mylist.append([])
mylist.append([])
mylist.append([])
mylist[0].append("Anna")
mylist[1].append("Maria")
mylist[2].append("Aaron")
mylist[0].append("Doctor")
mylist[1].append("Teacher")
mylist[2].append("Student")
mylist[0].append(36)
mylist[1].append(28)
mylist[2].append(13)
name_sort = sorted(mylist, key = operator.itemgetter(0))
age_sort = sorted(mylist, key = operator.itemgetter(2), reverse=True)
print(name_sort)
print(age_sort)
它首先打印按名称升序排列的列表,然后打印按年龄降序排列的列表:
>>>
[['Aaron', 'Student', 13], ['Anna', 'Doctor', 36], ['Maria', 'Teacher', 28]]
[['Anna', 'Doctor', 36], ['Maria', 'Teacher', 28], ['Aaron', 'Student', 13]]
另外请注意,我已经更改了列表的创建方式:每个子列表包含有关“实体/个人”的所有信息,而不是所有属性(例如年龄、姓名等)。尝试以下操作:
mylist = []
mylist.append([])
mylist.append([])
mylist.append([])
mylist[0].append("Anna")
mylist[1].append("Maria")
mylist[2].append("Aaron")
mylist[0].append("Doctor")
mylist[1].append("Teacher")
mylist[2].append("Student")
mylist[0].append(36)
mylist[1].append(28)
mylist[2].append(13)
mylist.sort(key=lambda x : x[2] , reverse = True)
如果要按年龄降序排序
如果要根据年龄进行排序,则需要使用lambda函数这是通过设置键来实现的,您希望根据元素索引位置(即在本例中,列表中的第二个元素->年龄)对列表进行排序。
最后使用reverse=True
语句。这基本上可以解释它自己。它只是简单地反转列表,从而使其按降序排列。就这样
如果你想按字母顺序排序
.sort()
函数最初使用列表中的第一个元素。因此,如果您想根据人名按字母顺序对其进行排序,那么只需使用这行代码mylist.sort()
如果您仍然觉得难以理解,请单击。是否有任何方法可以做到这一点,而不必更改列表的创建方式?