[英]Python list folders list by numeric order
我正在使用以下代碼獲取特定目錄中所有文件夾的列表:
TWITTER_FOLDER = os.path.join('TwitterPhotos')
dirs = [d for d in os.listdir(TWITTER_FOLDER) if os.path.isdir(os.path.join(TWITTER_FOLDER, d))]
這是數組: ['1','2','3','4','5','6','7','8','9','10','11']
.
我想按以下順序獲取數組: ['11','10','9','8','7','6','5','4','3','2','1']
所以我使用這個代碼:
dirs.sort(key=lambda f: int(filter(str.isdigit, f)))
當我使用它時,我得到了這個錯誤:
int() argument must be a string, a bytes-like object or a number, not 'filter'
知道有什么問題嗎? 或者我如何以另一種方式對其進行排序? 數組將按數字順序排序很重要,例如:
12 11 10 9 8 7 6 5 4 3 2 1
並不是:
9 8 7 6 5 4 3 2 12 11 1
謝謝!
過濾器返回一個迭代器,您需要將它們重新連接成一個字符串,然后才能將其轉換為 integer
dirs.sort(key=lambda f: int(''.join(filter(str.isdigit, f))))
使用帶鍵sorted
:
In [4]: sorted(f, key=lambda x: int(x), reverse=True)
Out[4]: ['11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
或者您可以執行f.sort(key=lambda x:int(x), reverse=True)
進行就地排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.