【问题标题】:Python: Sort a Nested List With Specific CriteriaPython:使用特定条件对嵌套列表进行排序
【发布时间】:2013-03-31 16:46:15
【问题描述】:

作为 Python 的初学者,我最近因使用特定条件对嵌套列表进行排序的问题而陷入困境。我有一个这样的嵌套列表:

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

我希望这个列表按每个嵌套列表中的第一个字符串排序。结果如下:

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

目前我的解决方案是只使用带反向参数的排序功能:

nestedList.sort(reverse=True)

我不确定这是否安全,因为我不希望它也按第二个字符串对列表进行排序。

如何仅按第一个字符串对其进行排序? (例如“R15L2”、“R3A1”等)

非常感谢您的帮助!

【问题讨论】:

  • 我的方法并没有真正起作用......例如,将 '1path1' 更改为 '5path1' 不会得到预期的结果...... :(
  • 我不明白你想要的结果。 'R3A1' 大于 'R2D2' 但在您的排序列表中排在它之前?
  • hmm...我在考虑R15L2>R3A1>R2D2...也许这比我预期的要复杂...
  • 如果要按数值排序,则必须先获取数值。将"R15L2"转换成('R', 15, 'L', 2)就可以正确排序了。

标签: python list sorting nested


【解决方案1】:

你想根据一个键排序(键是列表的第一个元素):

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

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']]
    >>> 
    

    【讨论】:

    • 对不起..不知道你想说什么...我已经有了这个解决方案,但似乎并不完全正确...
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2010-09-21
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多