使用lambda函数的python排序列表

时间:2014-11-12 01:37:04

标签: python-3.x

我有一个这样的清单:

[
    'C:\\Users\\Rash\\Downloads\\Programs\\a.txt',
    'C:\\Users\\Rash\\Downloads\\a.txt',
    'C:\\Users\\Rash\\a.txt',
    'C:\\Users\\ab.txt',
    'C:\\Users\\aa.txt'
]

我希望根据两个条件对其进行排序:

  1. 按字符串中的“\”排序。
  2. 字母表。
  3. 我的最终结果应该是:

    [
        'C:\\Users\\aa.txt',
        'C:\\Users\\ab.txt',
        'C:\\Users\\Rash\\a.txt',
        'C:\\Users\\Rash\\Downloads\\a.txt',
        'C:\\Users\\Rash\\Downloads\\Programs\\a.txt'
    ]
    

    我只是在python中学习lambda函数并编写了这段代码:

    print(sorted(mylist, key=lambda x:x.count("\\")))
    

    但此代码仅按“\”计数排序。它不按字母排序。结果是我在密钥“'C:\ Users \ aa.txt'”之前看到了密钥“'C:\ Users \ ab.txt'”。

    我可以对列表进行两次排序,但我希望在一行中完成。我应该在lambda代码中添加什么?由于我对这整个“lambda”事物不熟悉,我想不出办法做到这一点。感谢回复!! :)

1 个答案:

答案 0 :(得分:2)

从包含要排序的项目的键函数返回一个序列。

key=lambda x: (x.count('\\'), x.split('\\'))