Python: Sort a Nested List With Specific Criteria

流过昼夜 提交于 2019-12-13 04:00:54

问题


As a beginner of Python I recently get stuck for a problem of sorting a nested list with specific criteria. I have a nested list like this:

nestedList=[['R2D2','1path1','1path2'], 
            ['R3A1','2path1','2path2'],
            ['R15L2','3path1','3path2']]

I would like this list to be sorted by the first string in each nested list. The result would look like:

nestedList=[['R15L2','3path1','3path2'],
            ['R3A1','2paht1','2path2'],
            ['R2D2','1path1','1path2']]

Currently my solution is only use the sort function with reverse parameter:

nestedList.sort(reverse=True)

I am not sure whether this is safe, because I would like it not sort the list also by the second string.

How could I sort it only by the first string? (e.g. 'R15L2', 'R3A1', etc.)

Thanks a lot for your help!


回答1:


You want to sort according to a key (the key is the first element of a list):

nestedList.sort(key=lambda x: x[0])

or

import operator as op

nestedList.sort(key=op.itemgetter(0))



回答2:


 a = [['3f','2f','5a'],['5a','0r','7v'],['4r','58v','5l']]
>>> a
[['3f', '2f', '5a'], ['5a', '0r', '7v'], ['4r', '58v', '5l']]
>>> a.sort()
>>> a
[['3f', '2f', '5a'], ['4r', '58v', '5l'], ['5a', '0r', '7v']]
>>> a.sort(reverse=True)
>>> a
[['5a', '0r', '7v'], ['4r', '58v', '5l'], ['3f', '2f', '5a']]
>>> 


来源:https://stackoverflow.com/questions/15898817/python-sort-a-nested-list-with-specific-criteria

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!