Python 中日誌檔案的重新排序
假設我們有一個日誌陣列。在該陣列中,每個條目都是一個以空格分隔的單詞字串。每個日誌中的第一個單詞都是一個字母數字識別符號。然後,存在不同型別的字串,如下所示:
- 識別符號後的每個單詞僅包含小寫字母;
- 識別符號後的每個單詞僅包含數字。
我們將這兩種型別的日誌分別稱為字母日誌和數字日誌。並且保證每個日誌在其 ID 之後至少包含一個單詞。
我們必須重新排序日誌,以便所有字母日誌都位於任何數字日誌之前。字母日誌按字典順序排序(忽略識別符號),如果出現相同的情況則使用識別符號。最後,數字日誌應按其原始順序排列。因此,我們必須返回日誌的最終順序。
因此,如果輸入類似於 logs = ["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"],則輸出將為 ["let1 art can","let3 art zero","let2 own kit dig","dig1 9 2 5 2","dig2 4 8"]
為了解決這個問題,我們將遵循以下步驟:
- words := 一個新的列表
- nums := 一個新的列表
- 對於 logs 中的每個日誌,執行以下操作:
- s := 日誌的單詞列表
- 如果第二個單詞是數字,則
- 將日誌插入到 nums 列表的末尾
- 否則,
- 將 s 中的每個元素用空格分隔並連線起來,然後插入到 words 陣列的末尾
- words = 然後按字典順序對 words 陣列進行排序
- words := 將 words 陣列的每個元素用空格分隔並連線起來,並建立一個字串列表
- 合併兩個列表 words 和 nums,然後返回
讓我們看下面的實現來更好地理解:
示例
class Solution: def reorderLogFiles(self, logs): words = [] nums = [] for log in logs: s = log.split() if s[1].isdigit(): nums.append(log) else: words.append((s[0], ' '.join(s[1:]))) words = sorted(words, key=lambda x: (x[1],x[0])) words = [' '.join(w) for w in words] return words + nums ob = Solution() print(ob.reorderLogFiles(["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]))
輸入
["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]
輸出
['let1 art can', 'let3 art zero', 'let2 own kit dig', 'dig1 9 2 5 2', 'dig24 8']
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP