Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3中的二维列表排序_Python_Sorting - Fatal编程技术网

Python3中的二维列表排序

Python3中的二维列表排序,python,sorting,Python,Sorting,在Python3中,我很难对多维列表进行排序。我想根据姓名的字母顺序对下面的列表进行排序,然后根据年龄对列表进行排序。我尝试过使用排序函数和lambda键,但我得到了相同的索引错误,表明列表超出范围。我将如何对整个列表进行排序 mylist = [] mylist.append([]) mylist.append([]) mylist.append([]) mylist[0].append("Anna") mylist[0].append("Mar

在Python3中,我很难对多维列表进行排序。我想根据姓名的字母顺序对下面的列表进行排序,然后根据年龄对列表进行排序。我尝试过使用排序函数和lambda键,但我得到了相同的索引错误,表明列表超出范围。我将如何对整个列表进行排序

    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()


如果您仍然觉得难以理解,请单击。

是否有任何方法可以做到这一点,而不必更改列表的创建方式?