【发布时间】:2016-08-18 03:12:32
【问题描述】:
假设我有以下嵌套列表:
nestedlist = [[ 'ABC' , 1.5 , 2 , '8W' ],
[ 2 , 'EXT' , 5.8 , '2W' ],
[ 'DEF' , 2 , 0.2 , '2Z' ]]
为了解释我的问题,我将内部列表称为行(即 nestedlist[0] = row1、nestedlist[1] = row2 等),并将内部列表中的项目统称为与列共享相同的序号索引(即,nestedlist[0][0] = column1 的 item1,nestedlist[1][0] = column1 的 item2,等等...)
我将如何根据特定列中的值对行进行排序,这样如果在 column1 上排序,结果结构将如下所示:
nestedlist = [[ 2 , 'EXT' , 5.8 , '2W' ],
[ 'ABC' , 1.5 , 2 , '8W' ],
[ 'DEF' , 2 , 0.2 , '2Z' ]]
如果按 column2 排序,则结构如下:
nestedlist = [[ 'ABC' , 1.5 , 2 , '8W' ],
[ 'DEF' , 2 , 0.2 , '2Z' ],
[ 2 , 'EXT' , 5.8 , '2W' ]]
如果按 column3 排序,结构将如下所示:
nestedlist = [[ 'DEF' , 2 , 0.2 , '2Z' ],
[ 'ABC' , 1.5 , 2 , '8W' ],
[ 2 , 'EXT' , 5.8 , '2W' ]]
最后,如果按 column4 排序,结构将是:
nestedlist = [[ 2 , 'EXT' , 5.8 , '2W' ],
[ 'DEF' , 2 , 0.2 , '2Z' ],
[ 'ABC' , 1.5 , 2 , '8W' ]]
我知道,如果列中的所有项目都属于同一类型,则可以使用 sorted(nestedlist, key=itemgetter(sortColIndex)) 函数,但我终生无法弄清楚如何获取这可以使用混合类型。
【问题讨论】:
-
虽然相似之处在于两者都涉及自然顺序排序,但它们的不同之处在于我的问题是关于自然排序混合数据类型的嵌套列表,而您提供的链接讨论了自然排序单个字符串列表的解决方案.
-
将所有内容转换为字符串,然后转换为数字的元素(如果您的字符串包含数字并且它们应该保留为字符串,则不适用)。或者,使用可以处理所有适用类型的比较/键功能。无论是嵌套列表还是普通列表都无关紧要,问题在于排序,而不是处理嵌套列表(这些问题也被问到了)。
-
TigerhawkT3 ... 感谢您提供 4 个帖子的链接,这些帖子没有解决我关于如何对混合数据类型的嵌套列表进行排序的问题。回答你关于我是否已经研究过如何自己完成这个问题的问题然后当我再次使用它时必须输入检查并转换回每个数据项。
标签: python sorting nested-lists