我有一个这样的清单:
[
'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'
]
我希望根据两个条件对其进行排序:
我的最终结果应该是:
[
'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”事物不熟悉,我想不出办法做到这一点。感谢回复!! :)
答案 0 :(得分:2)
从包含要排序的项目的键函数返回一个序列。
key=lambda x: (x.count('\\'), x.split('\\'))