2014-01-22 174 views
0

是否編寫了遍歷目錄並檢查某些內容的腳本。 爲了簡單起見,假設我們有目錄a到z,並且檢查返回是或否。Python日誌消息「亂序」

通常,它會按遍歷順序打印是或否。

現在讓我們假設a到e返回yes,f-h返回no,並且i-z再次返回yes。現在我想打印這個,但是我希望它首先打印返回yes的路徑,然後返回no的路徑。所以我們得到:

a - yes 
b - yes 
... 
e - yes 
i - yes 
j - yes 
... 
z - yes 
f - no 
g - no 
h - no 

我該如何做到最好?

+1

我們展示你的代碼。 – 2014-01-22 11:41:06

回答

0

如果你可以把你的數據轉換成元組或列表的列表,那麼你可以使用內置的sort()方法和一個自定義的'cmp'函數。 cmp是一種古老的學校,但你的種類是獨一無二的,它是有道理的,回到它。如果您可以更改存儲數據的方式 - 即使用0而不是「yes」和1而不是「no」,則可以使用更高效的排序算法。

data = [('a','yes'),('b','yes'),('e','yes'),('g','no'),('z','yes'),('f','no')] 

def tuplecmp(a,b): 
    if(a[1]==b[1]): 
     return cmp(a[0], b[0]) 
    if(a[1]=='yes'): 
     return -1 
    return 1 

data.sort(cmp=tuplecmp) 
print data 
[('a', 'yes'), ('b', 'yes'), ('e', 'yes'), ('z', 'yes'), ('f', 'no'), ('g', 'no')] 

還有就是如何在這裏使用自定義功能CMP元組爲一個很好的演練:
http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch20s04.html

0

試試這個:把既肯定又否定道成一個列表,並在年底打印兩份名單....