Python 根据特定的有序列表(和其他选项)对表(列表列表列表)进行排序

Python 根据特定的有序列表(和其他选项)对表(列表列表列表)进行排序,python,sorting,Python,Sorting,我做了一些研究,但找不到按照特定顺序(即由特定列表给出)按列对表(列表列表)排序的方法 我有一个由列表列表组成的表,其中每个子列表表示表的一行,其每个元素都是该行的列值 我的_表有4列,我需要根据几个选项对表进行排序。 我目前正在按第一列和第二列对其进行排序,如下所示 My_table=sorted(My_table, key=lambda a: ( a[0], a[1])) 现在我需要先按第一列,然后按第三列对_表进行排序,但第三列(仅包含整数)必须根据特定列表进行排序,其中整数具有特定顺序

我做了一些研究,但找不到按照特定顺序(即由特定列表给出)按列对表(列表列表)排序的方法

我有一个由列表列表组成的表,其中每个子列表表示表的一行,其每个元素都是该行的列值

我的_表有4列,我需要根据几个选项对表进行排序。 我目前正在按第一列和第二列对其进行排序,如下所示

My_table=sorted(My_table, key=lambda a: ( a[0], a[1]))
现在我需要先按第一列,然后按第三列对_表进行排序,但第三列(仅包含整数)必须根据特定列表进行排序,其中整数具有特定顺序,例如:custom_list=[3,0,1,2]。(注意:列表中的整数是该列中可能出现的所有值,但并非所有值都必须出现)


如何应用排序?

可能是这样的

order_of_3rd = [3,0,1,2]
My_table.sort(key=lambda a: (a[0], order_of_3rd.index(a[2])))

注意:如果您只是将排序后的列表重新分配给原始列表,您也可以使用就地列表排序

我不确定是否理解。您正在按第一列和第三列排序,但不是按第三列排序,而是按自定义列表排序。。。您能澄清一下吗?让我重新解释一下:第一列包含整数,并按如下方式“正常”排序:
My_table=sorted(My_table,key=lambda:(a[0])
但我还想按第三列进行排序,第三列也包含整数;但我想根据自定义列表中定义的顺序对整数进行排序,例如自定义列表=[3,0,1,2]。我希望现在更清楚。(注意:列表中的整数是所有可能出现在第三列中的值,但并非所有值都必须出现)。字典中的键是从0开始的顺序整数。如果确实是这样,则
列表
是一个更好的数据结构。@cmd:它起作用了!非常感谢!>>>pprint(表)[(0,30.0,2,30.0,u‘col_农业’,(0,153.0,0,153.0,u‘col_农业’,(0,190.0,1190.0,u‘col_农业’,(1,74.0,2,74.0,u‘col_制造’,(1,66.0,66.0,u‘col_制造’,(1845.0,1845.0,u‘col_制造’,(2,10.0,u‘col_制造’,),(2,33.0,0,33.0,u‘col_服务’,(2,29.0,1,29.0,u‘col_服务’)]